2012-10-29 9 views
6

Sono connesso alla mia app utilizzando le credenziali FB. Alla fine eseguo un logout e rimuovo le mie variabili di sessione. Ho effettuato l'accesso fuori dall'applicazione, ma la sessione FB rimane aperta, anche se faccio un post alla pagina di logout FB con il post, come nel codice:FB Logout con 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(); 
} 

Ho provato sia: logoutUrl generato con e senza accedere al parametro token, né ha funzionato per me.

+1

hi controllare questo articolo: http://blog.prabir.me/post/Facebook-CSharp-SDK-Logout.aspx –

+0

già controllato che Pranay, non riesco a trovare nulla di utile, non ho classe FacebookOAuthClient() solo classe FacebookClient() – Biljanka

+0

Suggerisci che tutto sia a posto con il codice ma si sta verificando il bug dell'FB? – Biljanka

risposta

2

Ci sono state modifiche al logout di Facebook dal mio ultimo post sul blog. Ecco il modo di uscire.

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

// redirect to logoutUrl.AbsoluteUri 

URL successivo non può essere un URL arbitrario. Devo essere quello che fa parte dell'URL del sito che hai usato per recuperare il token di accesso.

+1

È tutto lo stesso risultato se metto la mia pagina iniziale o la pagina di callback nel parametro nex, la sessione utente fb è ancora attiva, quando apri facebook.com – Biljanka

+0

risolto. il mio errore era che stavo facendo un post e non reindirizzare all'URL di logout. – Biljanka

+0

e se l'utente non ha ancora il token di accesso? E se avesse premuto il pulsante "Salta" o premuto il segno x della finestra? (che significa che l'utente ha annullato durante il processo di oauth) Devo lasciare il token di accesso vuoto? –

0

@prabir ha la risposta. Ecco una risposta completa dopo averlo ottimizzato per la mia app MVC. Basta sostituire "localhost: 51042 /" con qualsiasi URL appropriato per la tua app.

Questo riempie effettivamente un buco nel tutorial: 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"); 
    }