Home > database >  iOS firebase auth current user get nil when restart app
iOS firebase auth current user get nil when restart app

Time:09-16

Auth.auth().signIn(withEmail:

In my case, When I first time open app and sign in firebase account like above code then I reopen app

let user = Auth.auth().currentUser

user is not nil and then I reopen app get currentUser again user is nil that mean I did not sign in

I have the other app do like this, but the user always not nil.

I wonder why this happens.

CodePudding user response:

I think it a big possibility you might be signed in on another device or signed in a different profile and didn't know, you might have some sync problems or security issues that did a safety measurement until you fix the security issue

CodePudding user response:

Firebase automatically restores the authenticated user when the app restarts. But this requires a call to the servers, which may take some time. If you check Auth.auth().currentUser while the check is still in progress, you will get nil as the result.

To ensure you get the value once this initial check is done, use an auth state listener as shown in the first snippet in the documentation on getting the current user. From there:

Auth.auth().addStateDidChangeListener { auth, user in
  // ...
}

Once this listener fires for the first time:

  • either the user variable will have a value if the user authentication state could be restored,
  • or it is nil if the user was not signed in last time the app ran, or the authentication state couldn't be restored (for example, because the account is disabled, or the password was changed).
  • Related