2016-06-21 105 views
7
不工作

我使用最新的火力地堡API(3.2.1),我使用此代碼來檢查,如果用戶在簽署:火力地堡登出斯威夫特

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) 
    } 
} 

換句話說,如果身份驗證對象存在我正在切換到其他控制器。在該控制器我已經登出按鈕,這是做登出這樣的:

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

我不會對此操作出現錯誤,但是當我切換到登錄控制器,此身份驗證物體是否存在,我得到轉回再次向控制器提供數據。我也嘗試在auth中檢查當前用戶對象,並且它存在並且有效。

任何人都知道我該如何正確退出?

+0

我實現了這個在我自己的應用程序,從一點點幫助威力在Firebase。你可以添加一個監聽器,正如我在[this]中所描述的(http://stackoverflow.com/questions/39301815/firebase-ios-swift-firauth-auth-signout-not-signing-out-current-user#answer- 40412452)答案。 –

回答

21

嘗試使用:

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

這是我在一個IBAction爲代碼,它的工作只是罰款:

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

我不明白我會怎樣做到這一點,我嘗試過,但它仍然無法正常工作。 – Dejan

+0

這對我有用。我所能推薦的就是創建一個新項目並設置一個基本的登錄/註銷,就像您在真實項目中完成一樣。如果它仍然不起作用,那麼你在使用它的方式上有錯誤,否則只是看看有什麼不同。 –

+1

@Damien Bannerot即使你成功運行試試! FIRAuth.auth()!。signOut(),.currentUser.uid將保持存儲在鑰匙串中。如果有人知道如何解決這個問題,請隨時發佈正確的答案。 – bibscy

相關問題