angemeldet ist, fragte ich mich, ob jemand eine Abhilfe für das Verhalten, das ich erlebe gefunden hat.auth.statusChange nicht während FB.init ausgelöst, wenn der Benutzer nicht auf Facebook
Nehmen wir das Beispiel des folgenden Code:
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '[----removed-------]', // App ID
channelUrl : 'http://localhost/channel.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies
xfbml : true // parse XFBML
});
// Additional initialization code here
FB.Event.subscribe('auth.statusChange',fbLoginStatus);
console.log("getloginstatus");
FB.getLoginStatus(fbLoginStatus);
</script>
FB.init mit Status auf true gesetzt verwenden, ruft im Wesentlichen getLoginStatus()
der facebook documentation nach. Es ist jedoch apparently intended behaviour, dass dies nicht löst das Ereignis auth.statusChange
, weil der Standardwert ist "unbekannt", und der Wert für "nicht angemeldet" ist auch "unbekannt" (obwohl es bekannt sein kann !!)
Deshalb habe ich hatte einen Aufruf an FB.getLoginStatus()
ausdrücklich sowie mit dem Status auf true gesetzt zu machen, wenn ich möchte auch für die Nutzer reagieren, die auf Facebook nicht angemeldet.
Das Problem ist, diese Ergebnisse in der Funktion aufgerufen zweimal zu werden, wenn der Benutzer etwas anderes ist als „abgemeldet“.
Gibt es eine nette Art und Weise dies zu verhindern? Ich denke, dass meine einzige Option könnte eine andere Funktion aufzurufen sein Auth Änderungsereignisse zu handhaben ..
seltsam - scheinen diese Fehler beseitigt wurden. Das Ganze ist eine Katastrophe. Ich habe keine Ahnung, wann "status: true" wirklich nützlich ist. Sie sagen: 'Wenn Sie in der FB den Status auf' True 'setzen.init() aufrufen, versucht das SDK unmittelbar nach init Informationen über den aktuellen Benutzer zu erhalten. Dies kann die Zeit verringern, die benötigt wird, um den Status eines angemeldeten Benutzers zu prüfen, wenn Sie Facebook Login verwenden, ist aber nicht für Seiten nützlich, auf denen nur soziale Plugins installiert sind. ' Also bedeutet das, dass die Antwort zwischengespeichert wird? –