我正在为网站进行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();
}
});
});
问题是表单在用户甚至可以看到权限对话框之前提交。谁看过这个吗?
答案 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