2015-03-31 18 views
26

In alcuni casi nella mia applicazione ho bisogno di scollegare l'utente, ma ho solo l'istanza FBSDKLoginButton a mio controller della vista e l'attuazione dellaFacebook SDK 4.0 IOS Swift Log un utente a livello di codice fuori

FBSDKLoginButtonDelegate 

utilizzando

func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) 

voglio pop la vista di accesso dopo la registrazione l'utente out (distruggendo sessione di Facebook) non so come utilizzare

FBSDKLoginManager.logOut(<#FBSDKLoginManager#>) 

I'am lavorando all'interno di un UIViewController e fa riferimento alla FBSDKLoginButton attraverso una presa

risposta

64

Ok, qui è la cosa per chiunque ha bisogno di assistenza. sono riuscito a registrare le mie utenti utilizzando FBSDKLoginManager esempio

A quanto pare e non so se è vero o no documentato FBSDKLoginManager orologi

FBSDKAccessToken.currentAccessToken() 

così

let loginManager = FBSDKLoginManager() 
loginManager.logOut() // this is an instance function 

Logs l'utente fuori, quello che ho frainteso che logOut non è una funzione di classe.

speranza che aiuti qualcuno!

+0

io chiamo questo da un controller TabBar e tornando al mio controller rootview vale a dire il mio login nel controller. Quando torno a questo controller della vista di accesso, vedo il log "utente disconnesso", quindi il logout ha funzionato, ma sto entrando nella funzione login doneCompleteWithResult. Qualche idea del perché? – user2363025

+0

Assicurati di non chiamare la funzionalità di accesso in viewDidAppear all'interno del tuo account ViewViewController, questo blocco dideleteWithResult dovrebbe essere chiamato solo quando viene attivata l'azione di accesso! Se questo non aiuta a incollare il codice qui –

+0

Non ho alcun codice in un viewdidappear per quel controller. Possiamo passare alla chat? – user2363025

11

fa la stessa cosa, ma in Objective-C:

[[[FBSDKLoginManager alloc] init] logOut];

Non dimenticare le importazioni: FBSDKCoreKit/FBSDKCoreKit.h & FBSDKLoginKit/FBSDKLoginKit.h

+0

È un po 'brutto, non è vero? – Ricardo

+0

È possibile aggiungere una variabile temporanea per tenere LoginManager per il successivo richiamo di logOut. Ma questo è il modo più breve se voglio solo uscire. A mio parere, LoginManager dovrebbe essere implementato come una classe singleton (perché alla fine funziona in questo modo) e quindi chiamare [[FBSDKLoginManager shared instance] logOut]. –

1

Inoltre, se si è utilizzato Parse e la Facebook SDK per iOS versione> = 4.4.0 per registrarsi o accedere a un utente tramite Facebook, utilizzare invece:

PFUser.logOut() 

Sarà il logout l'utente, eliminare la sessione sul lato Parse back-end (non dimenticate di enable Parse revocable session tramite le impostazioni dell'app Parse), più esso sarà anche eliminare il Facebook sessione scritta sul disco del dispositivo dell'utente.

Spero che questa risposta ti aiuti ragazzi.

27

Swifty e risposta semplice per i più pigri come me:

FBSDKLoginManager().logOut() 
+2

Il problema è che se chiami questo, una volta che l'utente prova ad accedere di nuovo con Facebook, dirà semplicemente "Hai già autorizzato {Nome app}". Come può l'utente disconnettersi da Facebook e cambiare account? – MarksCode

+0

@MarksCode. https://stackoverflow.com/questions/36368510/how-to-logout-user-using-facebook-authentication-using-swift-and-ios – Jeff