ios - 在 viewDidDisappear 上删除 Firebase authState

标签 ios swift firebase firebase-authentication

我正在使用 Firebase 的新框架,我试图分别在登录和注册 VC 上监控用户的登录状态。问题是如果注册 View 上的登录状态发生变化,登录 View 上的身份验证状态也会被调用。我的问题是,如何删除授权状态?我在 Firebase 网站上找到了语法,但在考虑我的身份验证状态代码时对要传递的内容感到有点困惑:

FIRAuth.auth()?.addAuthStateDidChangeListener { auth, user in
            if let theUser = user {
                // User is signed in.
                print("LOGGED IN!!!!  :::: \(theUser)")
                self.dismissViewControllerAnimated(true, completion: nil)
            } else {
                // No user is signed in.
                print("Need to login first.")
            }
        }

用于删除身份验证的代码,但不确定要传入什么。

FIRAuth.auth()?.removeAuthStateDidChangeListener(FIRAuthStateDidChangeListenerHandle) 

说我传入了一个 FIRAuthStateDidChangeListenerHandle,但我如何获得它,或者我是否以不同的方式重写我的 authState 代码?

最佳答案

只需将身份验证存储在一个变量中

self.authListener = FIRAuth.auth()?.addAuthStateDidChangeListener { auth, user in
            if let theUser = user {
                // User is signed in.
                print("LOGGED IN!!!!  :::: \(theUser)")
                self.dismissViewControllerAnimated(true, completion: nil)
            } else {
                // No user is signed in.
                print("Need to login first.")
            }
        }

稍后删除

FIRAuth.auth()?.removeAuthStateDidChangeListener(self.authListener) 

关于ios - 在 viewDidDisappear 上删除 Firebase authState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37642091/

相关文章:

ios - iPhone模拟器的Apple M1问题

ios - 在 Swift 中为我的 Core Data 默认堆栈创建一个单例

swift - Deinit 调用了两次

javascript - 如何在ionic上加载js文件

javascript - 使用 $add angularfire 生成自定义 key

ios - 如何使用 Xcode 11 和 swift 从一组用户输入 Ints 中找到 Max

ios - Admob 奖励视频只会出现一次,然后必须重新启动应用程序

ios - 使用 React-native 实现 Facebook 登录的问题

iOS 9 和 10 : blank space added at the screen top while using safe area layout guide

firebase - 如何在Firestore中的嵌套文档中更新嵌套文档?