FB.logout: Was sollte es für spätere Aufrufe von FB.getLoginStatus tun?

8

Nach Ссылка

  

Die Methode FB.logout () protokolliert den Benutzer von Ihrer Site

Was bedeutet das für spätere Aufrufe von FB. * Funktionen?

Insbesondere beobachte ich, dass, obwohl die Antwort auf FB.logout den Status "unbekannt" hat, nach dem Abmelden der Aufruf von FB.getLoginStatus den Status "connected" zurückgibt, wenn "true" als zweite übergeben wird Parameter oder nach einer Seitenaktualisierung.

Das ist für mich unerwartet ... vielleicht missverstehe ich, was "den Benutzer von Ihrer Seite abmeldet" bedeutet: Was bedeutet es in Bezug auf die FB. * Funktionen? Ich versuche, den Prozess von FB.login so gut wie möglich umzukehren. Wie kann das gemacht werden?

Update: Ich habe bei Ссылка getestet. Wenn ich auf Ссылка aktiv bin, funktioniert die Abmeldung wie erwartet, aber logout bei localhost: 8080 logout scheint nicht Arbeit, dh zeigt das oben genannte Problem. Um es klar zu sagen, in der Konsole erscheinen zu keinem Zeitpunkt Fehler. Der Code der Seite ist unten.

Um die Frage ein wenig zu ändern, warum tut es das auf localhost: 8080, und gibt es eine Möglichkeit, Logout lokal zu entwickeln, wo das Verhalten dasselbe ist wie im öffentlichen Web?

%Vor%     
Michal Charemza 01.10.2017, 16:09
quelle

2 Antworten

2

Der Grund, warum dies für Sie auf localhost nicht funktioniert, ist, dass Sie die App-Domains auf localhost festgelegt haben. App-Domains sollten nur dann festgelegt werden, wenn Sie eine tatsächliche Domain verwenden.

Also habe ich eine Debugging-Sitzung mit dem Javascript, das von FB JSSDK geladen wurde, durchgeführt und fand es unter der Zeile

%Vor%

Wenn Sie App domains nicht gesetzt haben, dann q=null und j=.localhost . Es ist also keine Domain auf dem Cookie gesetzt und somit funktioniert alles super.

Wenn Sie App domains als localhost , q=true und j=.localhost festgelegt haben. Wenn der Code versucht, eine Domäne zu setzen, verwendet er so etwas wie unten

  

"fbsr_370363483399260 = q8i_dn0F22UweXRMNff0tf5WpfYOelZ0vsjTIKrDhzww.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI .... A4NTgwNzg1MzEwOTk5In0; läuft ab = Fr, 13 Okt 2017 14:00:01 GMT; path = /; domain = .localhost"

Dies funktioniert nicht auf localhost und erlaubt kein Setzen des Cookies überhaupt. document.cookie setzt keine Cookies, die nicht mit der aktuellen Seite zusammenhängen. Aber wenn ich j=localhost in der Konsole überschreibe, funktionieren die Cookies. Aus diesem Grund sollten Sie App domain nicht auf localhost setzen, wenn Sie lokal testen

    
Tarun Lalwani 13.10.2017, 13:04
quelle
0
  

Die Methode FB.logout () protokolliert den Benutzer von Ihrer Site und in einigen   Fälle, Facebook.

Dies bedeutet:

  1. Schritte : Benutzer nicht eingeloggt Facebook - & gt; Loggen Sie sich in Ihre App ein

    Auf FB.Logout : Der Benutzer wird sich von Ihrer App und Facebook abmelden

  2. Schritte : Benutzer nicht eingeloggt Facebook - & gt; Melden Sie sich bei anderen Apps an . - & gt; Loggen Sie sich in Ihre App ein

    Auf FB.Logout : Der Benutzer wird sich sowohl von den Apps als auch von Facebook abmelden

  3. Schritte : Benutzer ist bereits bei Facebook angemeldet - & gt; Loggen Sie sich in Ihre App ein

    Auf FB.Logout : Der Benutzer wird sich von Ihrer App abmelden, aber nicht von Facebook.

(Hinweis: Wenn der Benutzer nicht bei Facebook eingeloggt ist, muss er / sie sich zuerst bei Facebook und dann bei Ihrer App anmelden)

In allen Fällen muss der Benutzer bei Facebook angemeldet sein. Wenn Sie FB.getLoginStatus verwenden, werden folgende Dinge passieren:

  1. Benutzer, der bei Facebook angemeldet ist und Ihre App authentifiziert ist.

    FB.getLoginStatus gibt connected

    zurück
  2. Benutzer hat sich bei Facebook angemeldet, aber Ihre Anwendung nicht authentifiziert

    FB.getLoginStatus gibt not_authorized

    zurück
  3. Wenn sich der Benutzer bei Facebook abmeldet oder sich von Ihrer App abmeldet (was zur Abmeldung von Facebook führen kann). (Dies scheint Ihr Fall zu sein) Da die App in diesem Fall nicht einmal versucht, eine Verbindung zu Facebook herzustellen, ist sie deshalb unbekannt.

    FB.getLoginStatus gibt unbekannt

    zurück

BEARBEITEN:

Jetzt im dritten Fall wird es immer unbekannt zurückkommen, weil es nicht einmal versucht, sich mit Facebook zu verbinden. Wenn Sie also force übergeben, versucht es, einen Ajax-Anruf bei Facebook zu machen und gibt Ihnen den Status zurück (sollte entweder verbunden sein oder nicht_autorisiert sein).

%Vor%

Die obige Funktion von Facebook SDK holt LogInStatus, wenn force true ist.

    
Navjot Ahuja 11.10.2017 16:57
quelle