2016-11-29 133 views
0

我正在構建一個Web應用程序,允許用戶使用OpenFB for Cordova登錄Facebook。我想只有某些特徵可見,如果他們登錄我試圖運行檢查的登錄狀態,並重新引導如果沒有登錄,這是我到目前爲止有:。如果用戶未登錄,重定向頁面

<head> 
    <script> 
    if(openFB.getLoginStatus.loginStatus = 'unknown'){ 
        window.location ="#/app/home"; 
    } 
    </script> 
</head> 

的getLoginStats功能作爲這樣的:

function getLoginStatus(callback) { 
    var token = tokenStore.fbAccessToken, 
     loginStatus = {}; 
    if (token) { 
     loginStatus.status = 'connected'; 
     loginStatus.authResponse = {accessToken: token}; 
    } else { 
     loginStatus.status = 'unknown'; 
    } 
    if (callback) callback(loginStatus); 
} 

當我CONSOLE.LOG我越來越不確定的值。即使在使用Facebook登錄時也是如此。我錯過了明顯的東西嗎?

註銷請求代碼:

//logout function 
$scope.fbLogout = function(){ 
openFB.logout(); //logouts after revoking permissions. 
alert('Logged out'); 
} 
+0

您使用getLoginStatus作爲同步方法。也許嘗試從方法返回{loginStatus:「someStatus」}。 –

+0

原始的FB.getLoginStatus方法使用一個緩存的結果,你需要傳遞一個額外的參數來繞過緩存(參見文檔)。如果這個openFB thingie只是官方SDK方法(?)的一個包裝,那麼它很可能也採用這樣的參數。 – CBroe

回答

2

openFB.getLoginStatus是一個異步函數,它接受一個回調作爲參數。您必須像這樣使用它:

openFB.getLoginStatus((loginStatus) => { 
    console.log(loginStatus); 
}); 
+0

這看起來不錯,但當我退出時,我仍然得到status =「connected」 – shelum

+0

它可能是一個緩存問題。無論如何,你到底註銷了多少?希望與openFB.logout()?註銷後嘗試使用openFB.api進行API調用,看看是否可以獲得某些東西。但不要在註銷後立即調用它,使用註銷的回調函數......也是異步的。 – luschn

+0

是的,openFB.logout()然後在那之後重定向。我是否應該撤消權限? – shelum

相關問題