2010-02-07 30 views
1

我正在做一個站點的Facebook Connect集成和當用戶登錄時,我需要問一些權限,所以我使用FB.Connect.showPermissionDialog。我使用它的回調來查看權限是否被授予。如果他們被授予,我想提交表格。這裏是我的代碼的樣子:Facebook連接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

最近我做了同樣的事情。將按鈕移出窗體。移動它的方式,點擊它不會提交表單。現在使用下面的代碼來請求擴展權限,然後提交表單。

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