2016-06-21 5 views
7

Używam najnowszy Firebase API (3.2.1) i używam tego kodu, aby sprawdzić, czy użytkownik jest zalogowany:Firebase wylogowaniu nie działa w Swift

override func viewDidAppear(animated: Bool) { 
    super.viewDidAppear(animated) 

    if(self.navigationController != nil){ 
     self.navigationController!.setNavigationBarHidden(true, animated: true) 
    } 

    if(FIRAuth.auth() != nil){ 
     self.performSegueWithIdentifier("loginSuccessSegue", sender: self) 
    } 
} 

Innymi słowy, jeśli obiekt jest obecny auth Przełączam się na inny kontroler. Na tym kontrolerze mam podpisać przycisk, który robi znak na zewnątrz tak się:

do{ 
    try FIRAuth.auth()?.signOut() 
    self.performSegueWithIdentifier("logoutSegue", sender: self) 
}catch{ 
    print("Error while signing out!") 
} 

Nie rozumiem błąd na tej operacji, ale gdy mam włączony, aby zalogować się kontroler, obiekt auth jest obecne, a ja się z powrotem przełączony ponownie do kontrolera z danymi. Próbowałem również sprawdzić bieżący obiekt użytkownika w auth i jest obecny i ważny.

Ktoś wie, jak właściwie się wylogowuję?

+0

właśnie wdrażane w moim własnym aplikacji, z niewielką pomocą Wiley w Firebase. Możesz dodać słuchacza, tak jak opisałem w [this] (http://stackoverflow.com/questions/39301815/firebase-ios-swift-firauth-auth-signout-not-signing-out-current-user#answer- 40412452) odpowiedź. –

Odpowiedz

21

spróbuj:

try! FIRAuth.auth()!.signOut() 

Jest to kod mam w IBAction, i to działa dobrze:

try! FIRAuth.auth()!.signOut()  
if let storyboard = self.storyboard { 
    let vc = storyboard.instantiateViewControllerWithIdentifier("firstNavigationController") as! UINavigationController 
     self.presentViewController(vc, animated: false, completion: nil) 
    } 
+0

Nie rozumiem, co bym z tym osiągnął i spróbowałem, ale nadal nie działa. – Dejan

+0

To zadziałało dla mnie. Wszystko, co mogę polecić, to stworzyć nowy projekt i ustawić podstawowe logowanie/wylogowanie, tak jak zrobił to w swoim prawdziwym projekcie. Jeśli nadal nie działa, oznacza to, że coś jest nie w porządku z tym, jak go używasz, inaczej po prostu spójrz na to, co jest inne. –

+1

@Damien Bannerot, nawet jeśli pomyślnie uruchomisz! FIRAuth.auth() !. signOut(), .currentUser.uid pozostanie zapisane w pęku kluczy. Jeśli ktoś wie, jak to naprawić, możesz napisać poprawną odpowiedź. – bibscy