1

我正在为一个站点进行 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();
   }
 });
});

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

4

1 回答 1

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 格式的重定向 URL,您希望用户在他授予您权限以及成功发布表单内容时登陆该 URL。

第 10 行实际上将用户重定向到上次 AJAX 发布请求中以 JSON 形式出现的 URL。

高温高压

于 2010-03-20T12:07:16.790 回答