我正在嘗試將Facebook登錄功能添加到使用Javascript的我的網站中。 我已經調用了FB.init和FB.login,並獲得了預期的彈出窗口,要求我使用我的Facebook憑證登錄。 FB.login調用請求user_birthday和電子郵件權限,所以我也得到預期的對話框,要求我允許這些權限。如果我接受,登錄工作和控制返回到我的父頁面。從Facebook取消權限對話框重定向但不關閉
如果我不接受的權限(命中取消按鈕),接下來發生的事情似乎是不一致的。我所希望的是彈出式窗口會消失,並將控制權返回到父窗口,然後該窗口將能夠處理拒絕的響應。最終,我想給我的用戶留言,讓他們知道他們取消時會發生什麼。
相反,我有時會看到彈出窗口重定向到您看到當您直接登錄到Facebook的主要Facebook頁面。有時候彈出窗口變爲空白,並剛好在那裏(它指向我在FB.init調用中指定的ChannelUrl頁面)。在這兩種情況下,直到我手動關閉彈出窗口時,控件纔會返回到父頁面。
示例代碼:
<html>
<body>
<div id="fb-root"></div>
<script language="Javascript">
window.fbAsyncInit = function() {
FB.init({
AppId : 'XXXXXXX',
channelUrl: 'http://www.mydomain.com/channel.html', //custom channel
status: true,
cookie: true,
xfbml: true,
oauth: true
});
};
// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document))
function fbLogin()
{
FB.login(function (response){
if (response.authResponse) {
Debug("Auth Logged in");
}
else
{
Debug("Auth failed");
}
}, {scope:'user_birthday,email'});
}
function Debug(psMessage)
{ // something to provide feedback on what happened...
var objDebug = document.getElementById("Debug");
var objDate = new Date();
var sTime = objDate.getHours() + ":" + objDate.getMinutes() + ":" + objDate.getSeconds();
objDebug.innerHTML = sTime + " - " + psMessage + "<br>" + objDebug.innerHTML;
}
</script>
<form>
<input type="button" value="Log in" onClick="fbLogin();">
<br>
<br>
<br>
<br>
<div id="Debug"></div>
</form>
</body>
</html>
我已經嘗試了各種各樣的事情。我刪除並創建了一個新的應用程序。我創建了channelUrl參數(它只包含 <script src="//connect.facebook.net/en_US/all.js"></script>
)。
沒有人有任何見解,以我在做什麼錯誤(這似乎發生至少在IE8,Safari瀏覽器5.0.5和Firefox 11.0的所有Windows XP系統)?
感謝您的幫助!
我有完全相同的問題,但有時窗口只是掛在''/connect/xd_proxy.php?太令人沮喪了。 – 2012-04-07 02:24:34