在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的开头。 但是我认为在大多数情况下,如果用户进入视图,你只需要检查一次

Interesting Posts