it-swarm.com.de

Facebook JS SDK FB.logout () beendet die Benutzersitzung nicht

Ich versuche, einen Benutzer mit dem Facebook JS SDK von Facebook abzumelden.

FB.logout(function(response){
    console.log(response);
});

gibt zurück: response.status == "verbunden"

Erst nach dem Aktualisieren der Seite erkennt das SDK, dass die Sitzung beendet ist. Weiß jemand, was dieses Verhalten verursachen könnte? Dieser Code hat zuvor in meiner Anwendung funktioniert und hat sich seit kurzem so verhalten.

Ein weiteres Beispiel mit FireBug:

enter image description here

18
Casey Flynn

https://developers.facebook.com/bugs/245362365535898?browse=search_4f112135664703a96454690 Dies ist ein Fehler im JS SDK, der jetzt behoben wurde und nicht zu lang werden sollte.
Bis dahin können Sie Folgendes tun

FB.logout(function(response) {
  FB.Auth.setAuthResponse(null, 'unknown');
  ...
});
13
Sean Kinsey

Siehe http://hustoknow.blogspot.com/2012/01/dealing-with-zombie-facebook-cookies.html

Wenn Sie sich abmelden, wird eine domänenübergreifende Anfrage an Facebook gesendet, um die Sitzung für ungültig zu erklären. Wenn Sie auf "Neu laden" klicken, wird eine weitere Anfrage an die Website von Facebook gesendet. Da das Cookie von FB als ungültig erkannt wird, wird das Cookie korrekt aus Ihrem Browser gelöscht.

Ich vermute, es ist ein Fehler, der dazu führt, dass der fbm_-Cookie, den er kürzlich am letzten Tag eingeführt hatte, nicht analysiert wurde. Ich bin nur überrascht, dass dieser Fix nicht weiterentwickelt wurde.

3
Roger
FB.logout(function(response) {
  ...
});

Diese FB.logout-Methode arbeitet zu 100%. Das Problem ist, dass Benutzer versuchen, sie von localhost aufzurufen, die nicht funktioniert. 

Bitte versuchen Sie es vom Server aus.

3
NavCore

Da ich viel Zeit verbracht habe, um herauszufinden, was genau in der FB-Abmeldung passiert, habe ich mich besser für andere entschieden.

Zuerst lesen Sie bitte die Dokumentation hier

Eine Person meldet sich bei Facebook an und dann bei Ihrer App. Nach dem Abmelden von Ihrer App ist die Person weiterhin bei Facebook angemeldet.

dieser Punkt brachte 90% meiner Zeit ein. Wenn ich mich bei facebook.com angemeldet habe und versucht habe, den Login-Button in meiner Anwendung zu testen, funktionierte es wie erwartet, aber die Abmeldung beendete die Sitzung nicht. 

Lösung oder Fehlerbehebung: Gemäß den in diesem Dokument angegebenen Szenarien wird die Benutzersitzung nicht beendet, da der Login nicht initiiert von der App aus initiiert wird. Dies ist von facebook.com. In diesem Fall beendet fb die Sitzung nicht.

Wenn Sie sich über Ihre App bei fb anmelden (neues Login als Benutzername und Kennwort), berücksichtigt das System die Quelle/den Auslöser der Sitzung als Ihre App. Wenn Sie sich also abmelden (window.FB.logout oder FB.logout), wird die Benutzersitzung vollständig beendet.

Melden Sie sich daher bitte von facebook.com ab, bevor Sie die Anmeldefunktionalität in Ihrer App testen.

Verwenden Sie den folgenden Code, um sich abzumelden

FB.logout(function(response) {
 // response from logout will have authResponse with access_token so better to test the status as it will return "unknown"
 if(response.status !== "connected") { } \\ do some check on the status of the login before considering successful logout.
});

Zu guter Letzt: Um von localhost aus zu testen, aktualisieren Sie bitte die Einstellungen in der FB APP

  1. Update App Domains bis localhost
  2. Site URL unter Websites anhttp: // localhost: 3000/

Damit werden Probleme gelöst, die beim Testen von localhost auftreten

2
vishnu lal

Ich habe ähnliche Probleme gehabt. Ich habe FB.getLoginStatus() nach dem Logout verwendet.

1
Abdul Ahad

Ich habe die gleiche Erfahrung mit der FB.Logout(), die nicht wie angekündigt funktioniert. Als Workaround verwende ich die unten stehende Javascript-Funktion, um zu überprüfen, ob der Benutzer angemeldet ist, und wenn dies der Fall ist, leite ich nach https://www.facebook.com/logout.php mit der URL der folgenden Seite, die geladen werden soll ihr Zugangstoken:

    function reallylogout() {
      FB.getLoginStatus(function (response) {
        if (response.authResponse) {
           window.location = "https://www.facebook.com/logout.php?next=" +
             'URL to redirect to' +
             "&access_token=" + response.authResponse.accessToken;
        } else {
           $("#loginButtonDiv").show();
           $("#logoutButtonDiv").hide();
        }
      });
    }

Das Show/Hide-Bit ist nur jQuery, um Divs anzuzeigen oder auszublenden, in denen sich eine Schaltfläche zum Anmelden und Abmelden befindet. Der Onclick der Logout-Schaltfläche löst die reallyLogout () - Funktion aus.

Das funktioniert für meine App.

1
Pat James

in asp.net mvc application habe ich es wie folgt gemacht.


<a href="javascript:void(0);" class="logOff">Log out</a>

$(function () {


    $(".logOff").click(function () {

        //check if logout is 
        FB.getLoginStatus(function (response) {
            console.log('inside login status');
            if (response.status === 'connected') {
                // the user is logged in and has authenticated your
                // app, and response.authResponse supplies
                // the user's ID, a valid access token, a signed
                // request, and the time the access token 
                // and signed request each expire
                var uid = response.authResponse.userID;
                var accessToken = response.authResponse.accessToken;
                FB.logout(function (response) {

                    FB.Auth.setAuthResponse(null, 'unknown');

                });
            } else if (response.status === 'not_authorized') {
                // the user is logged in to Facebook, 
                // but has not authenticated your app

            } else {
                // the user isn't logged in to Facebook.
                console.log('response status not logged in');
            }
        });
        window.location.href = '@Url.Action("LogOff", "Account")';

    });
0
aamir sajjad

Es scheint in Facebook defekt zu sein. Auf FB rell können Sie sich anmelden, aber die Logout-Funktion bewirkt nichts. http://www.fbrell.com/auth/all-in-one

0
Shaun

Ok Jungs, ich habe dafür eine Lösung gefunden:

Setzen Sie das onClick-Ereignis für das Logout-Tag <a> wie folgt 

onclick="FB.logout(function() { document.location.reload(); });"

Alle zusammen:

<a href="#" 
   id="auth-logoutlink"
   style="float:left;font-size: small;"
   onclick="FB.logout(function() { document.location.reload(); });">
   [logout]
</a>
0
sajanyamaha