2012-10-29 30 views
6

Jestem zalogowany do mojej aplikacji przy użyciu moich poświadczeń FB. Na koniec robię wylogowanie i usuwam zmienne sesji. Jestem wylogowany z aplikacji, ale sesja FB pozostaje otwarta chociaż zrobić post na stronie wylogowania FB ze stanowiskiem jak w kodzie:FB Wylogowanie z 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(); 
} 

Próbowałem zarówno: logoutUrl generowane i bez dostęp do parametru tokena, nie działa dla mnie.

+1

hi sprawdzić ten artykuł: http://blog.prabir.me/post/Facebook-CSharp-SDK-Logout.aspx –

+0

sprawdzonych już, że Pranay, nie mogę znaleźć niczego przydatnego, nie mam klasy FacebookOAuthClient() tylko FacebookClient() klasa – Biljanka

+0

Czy sugerujesz, że wszystko jest w porządku z kodem, ale błąd FB ma miejsce? – Biljanka

Odpowiedz

2

Nastąpiły zmiany w wylogowaniu z Facebooka od czasu mojego ostatniego posta na blogu. Oto sposób wylogowania.

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

// redirect to logoutUrl.AbsoluteUri 

następny URL nie może być dowolnym adresem URL. Muszę być tym, który jest częścią adresu URL strony używanego do pobierania tokenu dostępu.

+1

Wszystkie te same wyniki, jeśli umieściłem stronę początkową lub stronę oddzwonienia w parametrze nex, sesja użytkownika fb jest nadal aktywna, po otwarciu facebook.com – Biljanka

+0

rozwiązano problem. moim błędem było to, że robiłem post, a nie przekierowanie do adresu wylogowania. – Biljanka

+0

co, jeśli użytkownik nie ma jeszcze tokena dostępu? co jeśli nacisnął przycisk "Skip" lub nacisnął znak x okna? (co oznacza, że ​​użytkownik został anulowany podczas procesu oauth) Czy powinienem pozostawić to hasło jako puste? –

0

@prabir ma odpowiedź. Oto pełna odpowiedź po tym, jak zmodyfikowałem ją dla mojej aplikacji MVC. Wystarczy zamienić "localhost: 51042 /" na dowolny URL odpowiedni dla Twojej aplikacji.

To rzeczywiście wypełnia dziurę w tutorialu: 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"); 
    }