2016-11-29 24 views
0

私はOpenFB for Cordovaを使用してFacebookでログインできるWebアプリケーションを構築しています。それらがログインしている場合、私はいくつかの特徴のみが閲覧可能たくログインしていない場合、私は、ログイン状態のチェックを実行しようと再演出しています。これは、私がこれまで持っているものです。ユーザーがログインしていない場合のページのリダイレクト

<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でログインしても。私は明白な何かを欠いていますか

要求ログアウトコード:

+0

あなたは同期メソッドとしてgetLoginStatusを使用しています。おそらくメソッドから{loginStatus: "someStatus"}を返そうとします。 –

+0

オリジナルのFB.getLoginStatusメソッドはキャッシュされた結果を使用します。追加のパラメータを渡してキャッシュを迂回させる必要があります(ドキュメントを参照)。そのopenFBのことは公式のSDKメソッド(?)のラッパーに過ぎませんそのようなパラメータも同様に取る。 – CBroe

答えて

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

openFB.getLoginStatusパラメータとしてコールバックを取る非同期関数です。

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

これはうまく見えますが、ログアウトしてもステータスは「接続済み」になります – shelum

+0

キャッシングの問題です。あなたはとにかくどのくらいログアウトしますか?うまくいけばopenFB.logout()で?ログアウト後にopenFB.apiでapiコールを試してみて、何かが得られるかどうか確認してください。ログアウト直後に呼び出すだけではなく、logoutのコールバック関数を使用しても非同期です。 – luschn

+0

はい、openFB.logout()してからリダイレクトしてください。権限も取り消すべきですか? – shelum

関連する問題