Lavvo Lavvo - 1 year ago 652
Swift Question

How to maintain user session after exiting app in Firebase

I have an app using Firebase as backend. My App implements Firebase-Authentication API using simple Email and Password login for authenticating.

Everything works fine except for one issue. I would like to maintain the user session even after a user closes the App.

FIRAuth.auth()?.currentUser? has all the user properties (ex: uid, email, token etc...) for the current user which works great. The problem I noticed is that FIRAuth.auth()?.currentUser? is not persistent. So after exiting the app and launching again, it returns null.

I would not like to ask a user every time they open the app to login again. Is there a way around this?

Answer Source

Firebase should already be keeping track of your user through app launches.

Your issue could be with using FIRAuth.auth()?.currentUser? directly rather than the recommended approach.

The recommended way to get the current user is by setting a listener on the Auth object:

FIRAuth.auth()?.addAuthStateDidChangeListener { auth, user in
  if let user = user {
    // User is signed in.
  } else {
    // No user is signed in.

By using a listener, you ensure that the Auth object isn't in an intermediate state—such as initialization—when you get the current user.