我正在查看 Firebase Auth 的文档,以便让我的 native iOS 应用的身份验证正常工作。我在注销我的应用程序时遇到一些问题(登录的用户仍然存在于 auth() 实例中),并且我遇到了此代码作为我无法注销的可能解决方案,但我不这样做了解适合的目的。
什么是 AuthStateDidChangeListenerHandle?是帮助您在不同 View Controller 之间传递用户还是让用户退出?
handle = Auth.auth().addStateDidChangeListener { (auth, user) in
//...
}
Auth.auth().removeStateDidChangeListener(处理!)
最佳答案
当您使用 Auth.auth().addStateDidChangeHandler
附加一个处理程序时,只要用户的身份验证状态发生变化,您的完成处理程序就会被调用。
最常见的情况是应用程序启动时。对用户进行身份验证需要 Firebase SDK 调用 Firebase 服务器来验证用户的凭据。这可能需要一些时间,因此不会阻止您的应用程序代码(这会导致糟糕的用户体验),而是允许您的代码继续运行,并且 Firebase 在后台处理此客户端到服务器的调用。然后,当调用完成时,它会使用用户的更新身份验证状态调用您的身份验证状态处理程序。
您始终可以调用 Auth.auth().currentUser
来获取用户的当前身份验证状态。但是,如果您在应用程序启动时执行此操作,对服务器的调用可能尚未完成,并且您将返回 nil
,因为没有经过身份验证的用户。这可能正是您想要的(例如:显示身份验证状态),但有时您实际上想要等到身份验证完成(例如:如果您想导航到允许用户输入其凭据的不同屏幕)。在后一种情况下,您需要使用 Auth.auth().addStateDidChangeHandler
等待身份验证完成,以确保您只有在确定状态已启动后才导航到下一个屏幕迄今为止。
关于ios - 什么是 AuthStateDidChangeListenerHandle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58288511/