这个问题之前有人问过: Firebase sign out not working in Swift Logging a user out with Firebase 3 and Swift still shows the `currentUser` Firebase - iOS Swift: FIRAuth.auth().signOut() not signing out current user
但是所有的答案都不适合我。我有 VC 1,用户可以在其中登录,并且在 viewdidappear 中我有一个打印用户的打印件?.uid。在 VC 2 中,我有一个按钮应该注销用户并返回到 VC 1。VC 2 中的代码:
@IBAction func logOut(_ sender: UIButton) {
if FIRAuth.auth()?.currentUser != nil {
do {
try! FIRAuth.auth()!.signOut()
} catch let error as NSError {
print(error.localizedDescription)
}
}
FBSDKAccessToken.setCurrent(nil)
loggedIn = false
storedValuesData.setValue(nil, forKey: "savedLoginEmail")
storedValuesData.setValue(nil, forKey: "savedLoginPassword")
jumpToVC1()
}
当我回到 VC 1 时,当用户按下注销按钮时,打印再次打印用户的 UID。但是该用户应该注销,因此打印应该为零。如何确保仅在确定用户已注销时才显示 VC 1?我认为完成 block 会很好,但我不确定它在这里如何工作......
最佳答案
您不需要完成 block ,因为该方法是同步的。
@IBAction func logOut(_ sender: UIButton) {
guard FIRAuth.auth()?.currentUser != nil else {
return
}
do {
try FIRAuth.auth()?.signOut()
FBSDKAccessToken.setCurrent(nil)
loggedIn = false
storedValuesData.setValue(nil, forKey: "savedLoginEmail")
storedValuesData.setValue(nil, forKey: "savedLoginPassword")
jumpToVC1()
} catch let error as NSError {
print(error.localizedDescription)
}
}
关于swift - 在 Facebook 的 Firebase 上注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42002097/