2010-02-07 3 views
1

Je fais une intégration de Facebook Connect pour un site et quand l'utilisateur se connecte, j'ai besoin de demander des permissions pour utiliser FB.Connect.showPermissionDialog. J'utilise son rappel pour voir si les autorisations ont été accordées. Si elles sont accordées, je veux soumettre le formulaire. Voici à quoi ressemble mon code:Facebook Connect showPermissionDialog callback se déclenche avant que l'utilisateur ne puisse voir la boîte de dialogue

$("#form3").live("submit", function() { 
FB.Connect.showPermissionDialog('email, offline_access', function(perms) { 
    if (!perms) { 
    location.href="http://www.mysite.com/logout/"; 
    return false; 
    } else { 
    save_session(); 
    } 
}); 
}); 

Le problème est que le formulaire est soumis avant même que l'utilisateur puisse voir la boîte de dialogue d'autorisation. Quelqu'un a-t-il déjà vu cela avant?

Répondre

0

Très récemment, j'ai fait la même chose. Déplacez le bouton hors du formulaire. Déplacez-le de manière à ce que vous ne le soumettiez pas. Maintenant, utilisez le code suivant pour demander des autorisations étendues, puis soumettez le formulaire.

1 var fb = { 
    2 extendedPermissions: function() { 
    3  $("#submit_button").click(function (event) { 
    4  FB.Connect.showPermissionDialog("email,read_stream,publish_stream", function (perms) { 
    6   if (!perms) { 
    7   location.href="http://www.mysite.com/logout/"; 
    8   } else { 
    9   $.post('/url_to_post_the_form', $('#form3').serialize(), function (data, textResponse) { 
10    window.location.replace(data.redirect); 
11   }, "json"); 
12   } 
13  }); 
14  }); 
15 } 
16 }; 

La ligne 4 s'assure que le clic sur le bouton affiche une boîte de dialogue d'autorisation pour l'utilisateur.

Ligne 7 Si l'utilisateur ne donne pas la permission, il est redirigé vers la déconnexion.

Ligne 9 sinon, vous postez le contenu du formulaire à l'endroit où vous souhaitez qu'il soit envoyé. Assurez-vous qu'il renvoie une URL de redirection au format JSON dans laquelle vous souhaitez que votre utilisateur se pose lorsqu'il vous en donne la permission et lorsque le contenu du formulaire est correctement enregistré.

La ligne 10 redirige réellement l'utilisateur vers l'URL qui est arrivée en tant que JSON dans la dernière demande de publication AJAX.

HTH

Questions connexes