我想知道是否有人找到了我所遇到的行爲的解決方法。如果用戶未登錄到Facebook,則auth.statusChange在FB.init期間不會觸發
就拿例如下面的代碼:
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '[----removed-------]', // App ID
channelUrl : 'http://localhost/channel.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies
xfbml : true // parse XFBML
});
// Additional initialization code here
FB.Event.subscribe('auth.statusChange',fbLoginStatus);
console.log("getloginstatus");
FB.getLoginStatus(fbLoginStatus);
</script>
使用FB.init與狀態設置爲true,根據facebook documentation基本要求getLoginStatus()
。然而,它是apparently intended behaviour,這將而不是觸發事件auth.statusChange
,因爲默認值是'未知',和'未登錄'的值也是'未知'(即使它可以被知道! )
因此我不得不打電話給FB.getLoginStatus()
明確以及狀態設置爲true,如果我也想回應未登錄到Facebook的用戶。
問題是,如果用戶是「註銷」以外的任何東西,則會導致函數被調用兩次。
有沒有一種簡潔的方法來阻止這種情況的發生? 我想我唯一的選擇可能是調用不同的函數來處理身份驗證更改事件..
奇怪 - 這個錯誤似乎已被刪除。這整件事是一場災難。我不知道「status:true」何時有用。他們說:'如果您在FB中將狀態設置爲true。init()調用時,SDK將嘗試在init之後立即獲取有關當前用戶的信息。如果您使用的是Facebook登錄,那麼這樣做可以減少檢查登錄用戶的狀態所需的時間,但對於只有社交插件的網頁無效。這是否意味着響應被緩存? –