在iOS中通过侦听器检查Firebase当前login的用户
我已经实施了Firebase授权,通过Facebook和Google在我的iOS应用上login。 我正在编写Swift。 当应用程序启动时,我需要检查一个用户是否已经login,以呈现正确的ViewController(例如,如果没有人login,我呈现login视图控制器,否则我呈现主视图控制器)。 如果我使用Firebase提供的“简单”解决scheme,则意味着什么
if FIRAuth.auth()?.currentUser != nil { // User is signed in. // ... } else { // No user is signed in. // ... }
因此,检查当前用户是否不为零,这正好发生在Firebase指南( https://firebase.google.com/docs/auth/ios/manage-users )警报可能发生的意义
“注意:currentUser也可能是零,因为auth对象还没有完成初始化,如果你使用一个监听器来跟踪用户的login状态,你不需要处理这种情况。
所以我想按照指南中的build议来实现监听器:
handle = FIRAuth.auth()?.addStateDidChangeListener() { (auth, user) in // ... }
侦听器还将处理中间状态,以便在创buildAuth对象时触发。 点是我真的不能使它正常工作。 任何人都可以帮助我使用这个监听器来检查一个用户是否login?
谢谢
我已经实现了这样的:
FIRAuth.auth()?.addStateDidChangeListener { auth, user in if let user = user { // User is signed in. Show home screen } else { // No User is signed in. Show user the login screen } }
如果你在检查之后不需要用户对象,你可以用一个布尔testingreplaceif let user = user
,如下所示:
FIRAuth.auth()?.addStateDidChangeListener { auth, user in if user != nil { // User is signed in. Show home screen } else { // No User is signed in. Show user the login screen } }
听者的位置(来自评论):
对于我用来检查用户是否login的情况,在特定的视图控制器中将其放在viewDidLoad
的开头就足够了。 但是,如果您有任何需要检查每次进入特定视图控制器的情况,那么最好将它放在viewDidAppear
的开头。 但是我认为在大多数情况下,如果用户进入视图,你只需要检查一次