2017-04-11 133 views
0

我完成新react-native和Facebook sdk如何檢查用戶是否已經登錄?

所以我跟着給here教程,一切工作正常,用戶能夠登錄使用Facebook。

我的問題是:

如何檢查,如果用戶當他打開下一次應用已經登錄?

我認爲回調onLoginFinished被調用每次不管用戶是否已經登錄或不。但事實並非如此。如果用戶已登錄,則不會調用onLoginFinished。有沒有任何複雜的回調來檢查?或任何其他方法或一些解決方法?

我試圖閱讀react-native-fbsdkhere的文檔,但它似乎是不夠的。

這裏是登錄按鈕:

<LoginButton 
    onLoginFinished={ (error, result) => { this.handleLogIn(error, result) } } 
    onLogoutFinished={() => { this.handleLogOut() } } 
/> 

和輔助功能:

handleLogIn(error, result) { 
    if (error) { 
     alert("Login failed with error: " + result.error); 
    } else if (result.isCancelled) { 
     alert("Login was cancelled"); 
    } else { 
     alert("Login was successful") 
     AccessToken.getCurrentAccessToken().then(
      (data) => {console.log(data);} //Refresh it every time 
     ); 
    } 
} 

handleLogOut() { 
    console.log("User logged out"); 
    alert("Log out successful"); 
} 

回答

6

您需要檢查是否currentAccessToken是有效的開始適當的地方,當你的應用程序已啓動。如果它返回null,則需要刷新令牌,如果刷新令牌已過期,則將用戶重定向到loginpage。

AccessToken.getCurrentAccessToken().then(
      (data) => {console.log(data);} //Refresh it every time 
     ); 
+0

作品完美,謝謝! –

+0

@agent_hunt如何檢查訪問令牌是否過期? accesstoken是空的嗎? – nullforlife

+0

根據文檔https://developers.facebook.com/docs/facebook-login/access-tokens/expiration-and-extension,這似乎被SDK自己關注。似乎有一種方法來閱讀本地android sdk中的expirationTime https://developers.facebook.com/docs/reference/androidsdk/current/facebook/com/facebook/accesstoken.html/#getexpires--但這不是由react-native-fbsdk暴露 –

相關問題