2015-03-31 16 views
26

W niektórych przypadkach w mojej aplikacji muszę zalogować użytkownika na zewnątrz, ale mam tylko instancję FBSDKLoginButton moim zdaniem regulatora i wdrożenieFacebook SDK 4.0 IOS Swift Log użytkownik się programowo

FBSDKLoginButtonDelegate 

użyciu

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

chcę pop widoku logowania użytkownika po zalogowaniu się (niszcząc Facebook sesji) nie wiem jak używać

FBSDKLoginManager.logOut(<#FBSDKLoginManager#>) 

I'am pracy wewnątrz UIViewController i odwoływania się FBSDKLoginButton przez wylot

Odpowiedz

64

Ok, tutaj jest rzeczą dla każdego, kto potrzebuje pomocy. udało mi się zalogować moje użytkowników przy użyciu FBSDKLoginManager instancja

Najwyraźniej, a ja nie wiem, czy jest to udokumentowane lub nie FBSDKLoginManager zegarki

FBSDKAccessToken.currentAccessToken() 

tak

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

Logi użytkownika, co nie rozumiem, że nie jest funkcją klasy.

nadzieję, że komuś pomóż!

+0

Wołam to od kontrolera umieszczenie zakładek i powrocie do mojego kontrolera rootview tj Logując w kontrolerze. Kiedy wracam do kontrolera widoku logowania, widzę dziennik "użytkownik wylogowany", więc wylogowanie zadziałało, ale dostaję się do funkcji logowania didCompleteWithResult. Każdy pomysł, dlaczego? – user2363025

+0

Upewnij się, że nie wywołujesz funkcji logowania w viewDidAppear w swoim kontrolerze loginViewController, ten blok doCompeleteWithResult powinien zostać wywołany tylko po uruchomieniu akcji logowania! Jeśli to nie pomogło wkleić kodu tutaj –

+0

Nie mam żadnego kodu w viewdidappear dla tego kontrolera. Czy możemy przejść do czatu? – user2363025

11

robi to samo, ale w Objective-C:

[[[FBSDKLoginManager alloc] init] logOut];

Nie zapomnij Import: FBSDKCoreKit/FBSDKCoreKit.h & FBSDKLoginKit/FBSDKLoginKit.h

+0

To trochę brzydkie, prawda? – Ricardo

+0

Możesz dodać tymczasową zmienną do przechowywania LoginManager dla późniejszego wywoływania logOut. Ale jest to najkrótsza droga, jeśli chcę się wylogować. Moim zdaniem LoginManager powinien zostać zaimplementowany jako klasa singleton (ponieważ na końcu działa w ten sposób), a następnie wywołać [[FBSDKLoginManager wspólne wystąpienie] logOut]. –

1

Ponadto, jeśli użyłeś Parse a Facebooku iOS SDK wersja> = 4.4.0, aby zarejestrować się lub zalogować użytkownika poprzez Facebook, użyj zamiast tego:

PFUser.logOut() 

To powoduje wylogowanie użytkownika, usunąć sesję na Parse back-end boku (nie zapomnij enable Parse revocable session pośrednictwem analizowania ustawieniach aplikacji), plus to także usunąć Facebook sesja zapisana na dysku urządzenia użytkownika.

Mam nadzieję, że ta odpowiedź pomoże wam.

27

Swifty i prosta odpowiedź dla leniwych jak ja:

FBSDKLoginManager().logOut() 
+2

Problem polega na tym, że jeśli zadzwonisz, gdy użytkownik spróbuje ponownie zalogować się na Facebooku, po prostu powie "Ty już autoryzowałeś {Nazwa aplikacji}". W jaki sposób użytkownik może wylogować się z Facebooka, a następnie przełączyć konto? – MarksCode

+0

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