2011-08-31 59 views
1

我的應用允許用戶使用Facebook請求對話發送請求。FB.INIT即使在狀態下也不強制登錄:true js sdk

我運行init如下:

<div id="fb-root"></div> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script> 
FB.init({ 
    appId: '193078857407882', 
    status: true, 
    cookie: true, 
    xfbml: false, 
     }); 
</script> 

從我的文檔中理解「狀態:真正的」應該是檢查用戶是否登錄Facebook。

在我的應用程序

然而,當用戶在它不記錄只顯示以下錯誤消息:

An error occurred with hbg. Please try again later. 

我怎麼能強制應用程序來檢查用戶登錄,如果沒有登錄?

的Rails 3.0.7,1.9.2紅寶石,JS SDK

回答

2

你可以通過調用FB.getLoginStatus

FB.getLoginStatus(function(response) { 
     if (response.authResponse) { 
     // logged in and connected user 
     } else { 
      FB.login(function(res) { 
       if (res.authResponse) { 
        // user logged in 
       } else { 
        // user cancelled login 
       } 
      }); 
     } 
    }); 
+0

由於DC。這看起來不錯。所以一旦我檢查了狀態,如果我是正確的,這段代碼將會顯示登錄對話框。 – chell

+0

如果他們沒有登錄,它會的。 –

4

根據Facebook的文檔爲FB.getLoginStatus檢查登錄狀態,如果你想獲得從傳遞響應status: trueFB.init,那麼你需要subscribeauth.statusChange事件:

雖然您可以撥打FB.getLoginStatus(例如,當 用戶試圖採取社交動作時),大多數社交應用需要在頁面加載後儘快知道用戶的狀態。在這種情況下, 而不是明確呼叫FB.getLoginStatus,它可能通過 通過設置status: true參數 調用FB.init來檢查用戶的狀態。

要收到此電話的回覆,您必須將subscribe改爲 auth.statusChange event。此事件傳遞的響應對象爲 ,與通過明確調用FB.getLoginStatus 返回的響應對象相同。

因此,在你的代碼,你會做這樣的事情

FB.Event.subscribe('auth.authResponseChange', function(response) { 
    alert('The status of the session is: ' + response.status); 
}); 

除非你訂閱auth.statusChange代替。但請注意,根據FB.Event.subscribe文檔:

auth.statusChange()沒有「狀態」字段。

相關問題