BrianLu
BrianLu

Reputation: 31

iOS firebase auth current user get nil when restart app

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.

Upvotes: 2

Views: 1879

Answers (2)

Frank van Puffelen
Frank van Puffelen

Reputation: 600006

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).

Upvotes: 3

Joshua Rindfuss
Joshua Rindfuss

Reputation: 1

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

Upvotes: 0

Related Questions