2016-11-29 3 views
0

Ich erstelle eine Web-App, mit der sich Benutzer über OpenFB für Cordova bei Facebook anmelden können. Ich möchte hier nur bestimmte Merkmale sichtbar, wenn sie angemeldet sind Ich versuche, einen Scheck über Login-Status zu laufen und wieder lenk wenn nicht angemeldet Dies ist, was ich bisher:..Eine Seite umleiten, wenn der Benutzer nicht eingeloggt ist

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

Die getLoginStats Funktion ist als solcher:

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); 
} 

Wenn ich console.log den Wert bekomme ich undefined. Auch wenn Sie mit Facebook eingeloggt sind. Fehle ich etwas Offensichtliches?

Logout Code angefordert:

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

Sie verwenden GetLoginStatus als Synchronisierungsmethode. Vielleicht versuchen Sie {loginStatus: "someStatus"} von der Methode zurückzugeben. –

+0

Die ursprüngliche FB.getLoginStatus-Methode verwendet ein zwischengespeichertes Ergebnis. Sie müssen einen zusätzlichen Parameter übergeben, um den Cache zu umgehen (siehe Dokumentation). Wenn diese openFB-Sache nur ein Wrapper für die offiziellen SDK-Methoden (?) Ist, dann wahrscheinlich nimmt auch einen solchen Parameter. – CBroe

Antwort

2

openFB.getLoginStatus ist eine asynchrone Callback-Funktion, die einen als Parameter nimmt. Sie müssen es wie folgt verwenden:

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

Das sieht gut aus, aber wenn ich ausgeloggt bin, bekomme ich immer noch Status = "connected" – shelum

+0

es kann ein Caching-Problem sein. Wie genau loggen Sie sich aus? hoffentlich mit openFB.logout()? probiere einen api-ruf mit openFB.api nach dem logout und schau ob du etwas bekommen kannst. aber nenn es nicht gleich nach dem Logout, benutze die Callback-Funktion von Logout ... das ist auch asynchron. – luschn

+0

ja, openFB.logout() und dann weiterleiten. Soll ich auch Berechtigungen entziehen? – shelum

Verwandte Themen