2012-10-29 9 views
6

Ich bin mit meinen FB-Anmeldeinformationen in meiner App angemeldet. Am Ende mache ich eine Abmeldung und entferne meine Sitzungsvariablen. Ich bin von der Anwendung abgemeldet, aber die FB-Sitzung bleibt offen, obwohl ich einen Beitrag an die FB Logout-Seite mit der Post wie im Code tun:FB Abmelden mit C# sdk

if (Session["FBAccessToken"] != null){ 

    var fb = new Facebook.FacebookClient(); 
    string accessToken = Session["FBAccessToken"] as string; 
    //var logoutUrl = fb.GetLogoutUrl(new { access_token = accessToken, next = "https://www.facebook.com/", }); 
    var logoutUrl = fb.GetLogoutUrl(new { next = "https://www.facebook.com/", }); 

    fb.Post(logoutUrl.AbsoluteUri, new { access_token = accessToken }); 
    Session.RemoveAll(); 
} 

ich beide versucht haben: LogoutURL generiert mit und ohne Zugriff Token Parameter, weder für mich gearbeitet.

+1

hallo diesen Artikel überprüfen: http://blog.prabir.me/post/Facebook-CSharp-SDK-Logout.aspx –

+0

bereits überprüft, dass Pranay, kann nichts hilfreiches finden, ich habe keine FacebookOAuthClient() Klasse nur FacebookClient() Klasse – Biljanka

+0

Schlägst du vor, dass alles in Ordnung mit dem Code ist, aber der FB Bug stattfindet? – Biljanka

Antwort

2

Seit meinem letzten Blog-Post gibt es Änderungen bei Facebook Logout. Hier ist der Weg zur Abmeldung.

var fb = new FacebookClient(); 
var logoutUrl = fb.GetLogoutUrl(new {access_token = "...", next = "...." }); 

// redirect to logoutUrl.AbsoluteUri 

nächste URL kann keine beliebige URL sein. Ich muss derjenige sein, der Teil der Site-URL ist, mit der Sie das Zugriffstoken abgerufen haben.

+1

Es ist alles das gleiche Ergebnis, wenn ich meine Startseite oder Rückrufseite in den Nex-Parameter, die fb Benutzersitzung ist immer noch aktiv, wenn Sie facebook.com öffnen – Biljanka

+0

löste es. Mein Fehler war, dass ich einen Beitrag machte und nicht auf die Abmelde-URL umgeleitet wurde. – Biljanka

+0

Was ist, wenn der Benutzer noch kein Zugriffs-Token hat? Was ist, wenn er die Taste "Überspringen" gedrückt oder die X-Markierung des Fensters gedrückt hat? (was bedeutet, dass der Benutzer während des oauth-Prozesses abgebrochen wird) Sollte ich das access_token einfach leer lassen? –

0

@prabir hat die Antwort. Hier ist eine vollständige Antwort, nachdem ich es für meine MVC-App optimiert habe. Ersetzen Sie einfach "localhost: 51042 /" durch die URL, die für Ihre App geeignet ist.

Dies ist eigentlich ein Loch im Tutorial füllt: http://www.asp.net/mvc/overview/getting-started/using-oauth-providers-with-mvc

public ActionResult LogOff() 
    { 
     WebSecurity.Logout(); 

     if (Session["facebooktoken"] != null) 
     { 
      var fb = new Facebook.FacebookClient(); 
      var logoutUrl = fb.GetLogoutUrl(new { access_token = Session["facebooktoken"], next = "http://localhost:51042/" }); 

      Response.Redirect(logoutUrl.AbsoluteUri); 
      Session.RemoveAll(); 
     } 

     return RedirectToAction("Index", "Home"); 
    }