Facebook Connect showPermissionDialog回调在用户甚至可以看到对话框之前触发

时间:2010-02-07 17:47:13

标签: facebook permissions callback connect

我正在为网站进行Facebook Connect集成,当用户登录时,我需要请求一些权限,因此我使用FB.Connect.showPermissionDialog。我使用它的回调来查看是否授予了权限。如果他们被授予,我想提交表格。这是我的代码的样子:

$("#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();
   }
 });
});

问题是表单在用户甚至可以看到权限对话框之前提交。谁看过这个吗?

1 个答案:

答案 0 :(得分:0)

最近我做了同样的事情。将按钮移出表单。移动它以便点击它不会提交表单。现在使用以下代码来请求扩展权限,然后提交表单。

  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 };

第4行确保单击该按钮时,会向用户显示权限对话框。

第7行如果用户未授予权限,则会重定向到注销。

第9行,否则您将表单内容发布到您希望其提交的位置。确保它返回JSON格式的重定向网址,您希望用户在授予您权限并成功发布表单内容时登陆。

第10行实际上将用户重定向到最后一次AJAX帖子请求中作为JSON的URL。

HTH