2012-04-05 51 views
2

我正在嘗試將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系統)?

感謝您的幫助!

+0

我有完全相同的問題,但有時窗口只是掛在''/connect/xd_proxy.php?太令人沮喪了。 – 2012-04-07 02:24:34

回答

0

我知道這是一個古老的線程,但我希望我的解決方案將幫助人們,面臨着同樣的問題。

  1. 如果您使用舊的Facebook應用程序儀表板,請禁用沙盒模式。

  2. 如果使用新的Facebook應用程序儀表板,單擊狀態和審查(在左側邊欄)和「......可用於一般公衆」從No更改爲Yes。

希望這可能有幫助。好運;)