swift - 在 Facebook 的 Firebase 上注销

标签 swift firebase firebase-authentication

这个问题之前有人问过: 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/

相关文章:

安卓 : Get the list of images to download added in the separate folder of Firebase console from a FireBase Storage API

用于启用/禁用用户的 Firebase 触发器

ios - Xcode-编译Swift段错误11

用于解析云代码的类似 Node.js 的 firebase 模块

swift - 在 SWIFT 中加密和解密

ios - 在 Firebase 中迭代快照子项

reactjs - Firebase + Nextjs - 用户 session 共享

javascript - 火力地堡 : Email has been badly formatted

ios - 在 XCode 7 中导入带有类别扩展的接口(interface)时编译和运行时失败

swift - 重新组织链接的可观察对象