Manage Users in Firebase

Create a user

You create a new user in your Firebase project by calling the createUserWithEmailAndPassword method or by signing in a user for the first time using a federated identity provider, such as Google Sign-In or Facebook Login .

You can also create new password-authenticated users from the Authentication section of the Firebase console , on the Users page.

Get the currently signed-in user

The recommended way to get the current user is by calling the getCurrentUser method. If no user is signed in, getCurrentUser returns null:

Kotlin

 val 
  
 user 
  
 = 
  
 Firebase 
 . 
 auth 
 . 
 currentUser 
 if 
  
 ( 
 user 
  
 != 
  
 null 
 ) 
  
 { 
  
 // User is signed in 
 } 
  
 else 
  
 { 
  
 // No user is signed in 
 } 
  

Java

 FirebaseUser 
  
 user 
  
 = 
  
 FirebaseAuth 
 . 
 getInstance 
 (). 
 getCurrentUser 
 (); 
 if 
  
 ( 
 user 
  
 != 
  
 null 
 ) 
  
 { 
  
 // User is signed in 
 } 
  
 else 
  
 { 
  
 // No user is signed in 
 } 
  

There are some cases where getCurrentUser will return a non-null FirebaseUser but the underlying token is not valid. This can happen, for example, if the user was deleted on another device and the local token has not refreshed. In this case, you may get a valid user getCurrentUser but subsequent calls to authenticated resources will fail.

getCurrentUser might also return null because the auth object has not finished initializing.

If you attach an AuthStateListener you will get a callback every time the underlying token state changes. This can be useful to react to edge cases like those mentioned above.

Get a user's profile

To get a user's profile information, use the accessor methods of an instance of FirebaseUser . For example:

Kotlin

 val 
  
 user 
  
 = 
  
 Firebase 
 . 
 auth 
 . 
 currentUser 
 user 
 ?. 
 let 
  
 { 
  
 // Name, email address, and profile photo Url 
  
 val 
  
 name 
  
 = 
  
 it 
 . 
 displayName 
  
 val 
  
 email 
  
 = 
  
 it 
 . 
 email 
  
 val 
  
 photoUrl 
  
 = 
  
 it 
 . 
 photoUrl 
  
 // Check if user's email is verified 
  
 val 
  
 emailVerified 
  
 = 
  
 it 
 . 
 isEmailVerified 
  
 // The user's ID, unique to the Firebase project. Do NOT use this value to 
  
 // authenticate with your backend server, if you have one. Use 
  
 // FirebaseUser.getIdToken() instead. 
  
 val 
  
 uid 
  
 = 
  
 it 
 . 
 uid 
 } 
  

Java

 FirebaseUser 
  
 user 
  
 = 
  
 FirebaseAuth 
 . 
 getInstance 
 (). 
 getCurrentUser 
 (); 
 if 
  
 ( 
 user 
  
 != 
  
 null 
 ) 
  
 { 
  
 // Name, email address, and profile photo Url 
  
 String 
  
 name 
  
 = 
  
 user 
 . 
 getDisplayName 
 (); 
  
 String 
  
 email 
  
 = 
  
 user 
 . 
 getEmail 
 (); 
  
 Uri 
  
 photoUrl 
  
 = 
  
 user 
 . 
 getPhotoUrl 
 (); 
  
 // Check if user's email is verified 
  
 boolean 
  
 emailVerified 
  
 = 
  
 user 
 . 
 isEmailVerified 
 (); 
  
 // The user's ID, unique to the Firebase project. Do NOT use this value to 
  
 // authenticate with your backend server, if you have one. Use 
  
 // FirebaseUser.getIdToken() instead. 
  
 String 
  
 uid 
  
 = 
  
 user 
 . 
 getUid 
 (); 
 } 
  

Get a user's provider-specific profile information

To get the profile information retrieved from the sign-in providers linked to a user, use the getProviderData method. For example:

Kotlin

 val 
  
 user 
  
 = 
  
 Firebase 
 . 
 auth 
 . 
 currentUser 
 user 
 ?. 
 let 
  
 { 
  
 for 
  
 ( 
 profile 
  
 in 
  
 it 
 . 
 providerData 
 ) 
  
 { 
  
 // Id of the provider (ex: google.com) 
  
 val 
  
 providerId 
  
 = 
  
 profile 
 . 
 providerId 
  
 // UID specific to the provider 
  
 val 
  
 uid 
  
 = 
  
 profile 
 . 
 uid 
  
 // Name, email address, and profile photo Url 
  
 val 
  
 name 
  
 = 
  
 profile 
 . 
 displayName 
  
 val 
  
 email 
  
 = 
  
 profile 
 . 
 email 
  
 val 
  
 photoUrl 
  
 = 
  
 profile 
 . 
 photoUrl 
  
 } 
 } 
  

Java

 FirebaseUser 
  
 user 
  
 = 
  
 FirebaseAuth 
 . 
 getInstance 
 (). 
 getCurrentUser 
 (); 
 if 
  
 ( 
 user 
  
 != 
  
 null 
 ) 
  
 { 
  
 for 
  
 ( 
 UserInfo 
  
 profile 
  
 : 
  
 user 
 . 
 getProviderData 
 ()) 
  
 { 
  
 // Id of the provider (ex: google.com) 
  
 String 
  
 providerId 
  
 = 
  
 profile 
 . 
 getProviderId 
 (); 
  
 // UID specific to the provider 
  
 String 
  
 uid 
  
 = 
  
 profile 
 . 
 getUid 
 (); 
  
 // Name, email address, and profile photo Url 
  
 String 
  
 name 
  
 = 
  
 profile 
 . 
 getDisplayName 
 (); 
  
 String 
  
 email 
  
 = 
  
 profile 
 . 
 getEmail 
 (); 
  
 Uri 
  
 photoUrl 
  
 = 
  
 profile 
 . 
 getPhotoUrl 
 (); 
  
 } 
 } 
  

Update a user's profile

You can update a user's basic profile information—the user's display name and profile photo URL—with the updateProfile method. For example:

Kotlin

 val 
  
 user 
  
 = 
  
 Firebase 
 . 
 auth 
 . 
 currentUser 
 val 
  
 profileUpdates 
  
 = 
  
 userProfileChangeRequest 
  
 { 
  
 displayName 
  
 = 
  
 "Jane Q. User" 
  
 photoUri 
  
 = 
  
 Uri 
 . 
 parse 
 ( 
 "https://example.com/jane-q-user/profile.jpg" 
 ) 
 } 
 user 
 !! 
 . 
 updateProfile 
 ( 
 profileUpdates 
 ) 
  
 . 
 addOnCompleteListener 
  
 { 
  
 task 
  
 - 
>  
 if 
  
 ( 
 task 
 . 
 isSuccessful 
 ) 
  
 { 
  
 Log 
 . 
 d 
 ( 
 TAG 
 , 
  
 "User profile updated." 
 ) 
  
 } 
  
 } 
  

Java

 FirebaseUser 
  
 user 
  
 = 
  
 FirebaseAuth 
 . 
 getInstance 
 (). 
 getCurrentUser 
 (); 
 UserProfileChangeRequest 
  
 profileUpdates 
  
 = 
  
 new 
  
 UserProfileChangeRequest 
 . 
 Builder 
 () 
  
 . 
 setDisplayName 
 ( 
 "Jane Q. User" 
 ) 
  
 . 
 setPhotoUri 
 ( 
 Uri 
 . 
 parse 
 ( 
 "https://example.com/jane-q-user/profile.jpg" 
 )) 
  
 . 
 build 
 (); 
 user 
 . 
 updateProfile 
 ( 
 profileUpdates 
 ) 
  
 . 
 addOnCompleteListener 
 ( 
 new 
  
 OnCompleteListener<Void> 
 () 
  
 { 
  
 @Override 
  
 public 
  
 void 
  
 onComplete 
 ( 
 @NonNull 
  
 Task<Void> 
  
 task 
 ) 
  
 { 
  
 if 
  
 ( 
 task 
 . 
 isSuccessful 
 ()) 
  
 { 
  
 Log 
 . 
 d 
 ( 
 TAG 
 , 
  
 "User profile updated." 
 ); 
  
 } 
  
 } 
  
 }); 
  

Set a user's email address

You can set a user's email address with the updateEmail method. For example:

Kotlin

 val 
  
 user 
  
 = 
  
 Firebase 
 . 
 auth 
 . 
 currentUser 
 user 
 !! 
 . 
 updateEmail 
 ( 
 "user@example.com" 
 ) 
  
 . 
 addOnCompleteListener 
  
 { 
  
 task 
  
 - 
>  
 if 
  
 ( 
 task 
 . 
 isSuccessful 
 ) 
  
 { 
  
 Log 
 . 
 d 
 ( 
 TAG 
 , 
  
 "User email address updated." 
 ) 
  
 } 
  
 } 
  

Java

 FirebaseUser 
  
 user 
  
 = 
  
 FirebaseAuth 
 . 
 getInstance 
 (). 
 getCurrentUser 
 (); 
 user 
 . 
 updateEmail 
 ( 
 "user@example.com" 
 ) 
  
 . 
 addOnCompleteListener 
 ( 
 new 
  
 OnCompleteListener<Void> 
 () 
  
 { 
  
 @Override 
  
 public 
  
 void 
  
 onComplete 
 ( 
 @NonNull 
  
 Task<Void> 
  
 task 
 ) 
  
 { 
  
 if 
  
 ( 
 task 
 . 
 isSuccessful 
 ()) 
  
 { 
  
 Log 
 . 
 d 
 ( 
 TAG 
 , 
  
 "User email address updated." 
 ); 
  
 } 
  
 } 
  
 }); 
  

Send a user a verification email

You can send an address verification email to a user with the sendEmailVerification method. For example:

Kotlin

 val 
  
 user 
  
 = 
  
 Firebase 
 . 
 auth 
 . 
 currentUser 
 user 
 !! 
 . 
 sendEmailVerification 
 () 
  
 . 
 addOnCompleteListener 
  
 { 
  
 task 
  
 - 
>  
 if 
  
 ( 
 task 
 . 
 isSuccessful 
 ) 
  
 { 
  
 Log 
 . 
 d 
 ( 
 TAG 
 , 
  
 "Email sent." 
 ) 
  
 } 
  
 } 
  

Java

 FirebaseAuth 
  
 auth 
  
 = 
  
 FirebaseAuth 
 . 
 getInstance 
 (); 
 FirebaseUser 
  
 user 
  
 = 
  
 auth 
 . 
 getCurrentUser 
 (); 
 user 
 . 
 sendEmailVerification 
 () 
  
 . 
 addOnCompleteListener 
 ( 
 new 
  
 OnCompleteListener<Void> 
 () 
  
 { 
  
 @Override 
  
 public 
  
 void 
  
 onComplete 
 ( 
 @NonNull 
  
 Task<Void> 
  
 task 
 ) 
  
 { 
  
 if 
  
 ( 
 task 
 . 
 isSuccessful 
 ()) 
  
 { 
  
 Log 
 . 
 d 
 ( 
 TAG 
 , 
  
 "Email sent." 
 ); 
  
 } 
  
 } 
  
 }); 
  

You can customize the email template that is used in Authentication section of the Firebase console , on the Email Templates page. See Email Templates in Firebase Help Center.

It is also possible to pass state via a continue URL to redirect back to the app when sending a verification email.

Additionally you can localize the verification email by updating the language code on the Auth instance before sending the email. For example:

Kotlin

 auth 
 . 
 setLanguageCode 
 ( 
 "fr" 
 ) 
 // To apply the default app language instead of explicitly setting it. 
 // auth.useAppLanguage()  
 

Java

 auth 
 . 
 setLanguageCode 
 ( 
 "fr" 
 ); 
 // To apply the default app language instead of explicitly setting it. 
 // auth.useAppLanguage();  
 

Set a user's password

You can set a user's password with the updatePassword method. For example:

Kotlin

 val 
  
 user 
  
 = 
  
 Firebase 
 . 
 auth 
 . 
 currentUser 
 val 
  
 newPassword 
  
 = 
  
 "SOME-SECURE-PASSWORD" 
 user 
 !! 
 . 
 updatePassword 
 ( 
 newPassword 
 ) 
  
 . 
 addOnCompleteListener 
  
 { 
  
 task 
  
 - 
>  
 if 
  
 ( 
 task 
 . 
 isSuccessful 
 ) 
  
 { 
  
 Log 
 . 
 d 
 ( 
 TAG 
 , 
  
 "User password updated." 
 ) 
  
 } 
  
 } 
  

Java

 FirebaseUser 
  
 user 
  
 = 
  
 FirebaseAuth 
 . 
 getInstance 
 (). 
 getCurrentUser 
 (); 
 String 
  
 newPassword 
  
 = 
  
 "SOME-SECURE-PASSWORD" 
 ; 
 user 
 . 
 updatePassword 
 ( 
 newPassword 
 ) 
  
 . 
 addOnCompleteListener 
 ( 
 new 
  
 OnCompleteListener<Void> 
 () 
  
 { 
  
 @Override 
  
 public 
  
 void 
  
 onComplete 
 ( 
 @NonNull 
  
 Task<Void> 
  
 task 
 ) 
  
 { 
  
 if 
  
 ( 
 task 
 . 
 isSuccessful 
 ()) 
  
 { 
  
 Log 
 . 
 d 
 ( 
 TAG 
 , 
  
 "User password updated." 
 ); 
  
 } 
  
 } 
  
 }); 
  

Send a password reset email

You can send a password reset email to a user with the sendPasswordResetEmail method. For example:

Kotlin

 val 
  
 emailAddress 
  
 = 
  
 "user@example.com" 
 Firebase 
 . 
 auth 
 . 
 sendPasswordResetEmail 
 ( 
 emailAddress 
 ) 
  
 . 
 addOnCompleteListener 
  
 { 
  
 task 
  
 - 
>  
 if 
  
 ( 
 task 
 . 
 isSuccessful 
 ) 
  
 { 
  
 Log 
 . 
 d 
 ( 
 TAG 
 , 
  
 "Email sent." 
 ) 
  
 } 
  
 } 
  

Java

 FirebaseAuth 
  
 auth 
  
 = 
  
 FirebaseAuth 
 . 
 getInstance 
 (); 
 String 
  
 emailAddress 
  
 = 
  
 "user@example.com" 
 ; 
 auth 
 . 
 sendPasswordResetEmail 
 ( 
 emailAddress 
 ) 
  
 . 
 addOnCompleteListener 
 ( 
 new 
  
 OnCompleteListener<Void> 
 () 
  
 { 
  
 @Override 
  
 public 
  
 void 
  
 onComplete 
 ( 
 @NonNull 
  
 Task<Void> 
  
 task 
 ) 
  
 { 
  
 if 
  
 ( 
 task 
 . 
 isSuccessful 
 ()) 
  
 { 
  
 Log 
 . 
 d 
 ( 
 TAG 
 , 
  
 "Email sent." 
 ); 
  
 } 
  
 } 
  
 }); 
  

You can customize the email template that is used in Authentication section of the Firebase console , on the Email Templates page. See Email Templates in Firebase Help Center.

It is also possible to pass state via a continue URL to redirect back to the app when sending a password reset email.

Additionally you can localize the password reset email by updating the language code on the Auth instance before sending the email. For example:

Kotlin

 auth 
 . 
 setLanguageCode 
 ( 
 "fr" 
 ) 
 // To apply the default app language instead of explicitly setting it. 
 // auth.useAppLanguage()  
 

Java

 auth 
 . 
 setLanguageCode 
 ( 
 "fr" 
 ); 
 // To apply the default app language instead of explicitly setting it. 
 // auth.useAppLanguage();  
 

You can also send password reset emails from the Firebase console.

Delete a user

You can delete a user account with the delete method. For example:

Kotlin

 val 
  
 user 
  
 = 
  
 Firebase 
 . 
 auth 
 . 
 currentUser 
 !! 
 user 
 . 
 delete 
 () 
  
 . 
 addOnCompleteListener 
  
 { 
  
 task 
  
 - 
>  
 if 
  
 ( 
 task 
 . 
 isSuccessful 
 ) 
  
 { 
  
 Log 
 . 
 d 
 ( 
 TAG 
 , 
  
 "User account deleted." 
 ) 
  
 } 
  
 } 
  

Java

 FirebaseUser 
  
 user 
  
 = 
  
 FirebaseAuth 
 . 
 getInstance 
 (). 
 getCurrentUser 
 (); 
 user 
 . 
 delete 
 () 
  
 . 
 addOnCompleteListener 
 ( 
 new 
  
 OnCompleteListener<Void> 
 () 
  
 { 
  
 @Override 
  
 public 
  
 void 
  
 onComplete 
 ( 
 @NonNull 
  
 Task<Void> 
  
 task 
 ) 
  
 { 
  
 if 
  
 ( 
 task 
 . 
 isSuccessful 
 ()) 
  
 { 
  
 Log 
 . 
 d 
 ( 
 TAG 
 , 
  
 "User account deleted." 
 ); 
  
 } 
  
 } 
  
 }); 
  

You can also delete users from the Authentication section of the Firebase console , on the Users page.

Re-authenticate a user

Some security-sensitive actions—such as deleting an account , setting a primary email address , and changing a password —require that the user has recently signed in. If you perform one of these actions, and the user signed in too long ago, the action fails and throws FirebaseAuthRecentLoginRequiredException . When this happens, re-authenticate the user by getting new sign-in credentials from the user and passing the credentials to reauthenticate . For example:

Kotlin

 val 
  
 user 
  
 = 
  
 Firebase 
 . 
 auth 
 . 
 currentUser 
 !! 
 // Get auth credentials from the user for re-authentication. The example below shows 
 // email and password credentials but there are multiple possible providers, 
 // such as GoogleAuthProvider or FacebookAuthProvider. 
 val 
  
 credential 
  
 = 
  
 EmailAuthProvider 
  
 . 
 getCredential 
 ( 
 "user@example.com" 
 , 
  
 "password1234" 
 ) 
 // Prompt the user to re-provide their sign-in credentials 
 user 
 . 
 reauthenticate 
 ( 
 credential 
 ) 
  
 . 
 addOnCompleteListener 
  
 { 
  
 Log 
 . 
 d 
 ( 
 TAG 
 , 
  
 "User re-authenticated." 
 ) 
  
 } 
  

Java

 FirebaseUser 
  
 user 
  
 = 
  
 FirebaseAuth 
 . 
 getInstance 
 (). 
 getCurrentUser 
 (); 
 // Get auth credentials from the user for re-authentication. The example below shows 
 // email and password credentials but there are multiple possible providers, 
 // such as GoogleAuthProvider or FacebookAuthProvider. 
 AuthCredential 
  
 credential 
  
 = 
  
 EmailAuthProvider 
  
 . 
 getCredential 
 ( 
 "user@example.com" 
 , 
  
 "password1234" 
 ); 
 // Prompt the user to re-provide their sign-in credentials 
 user 
 . 
 reauthenticate 
 ( 
 credential 
 ) 
  
 . 
 addOnCompleteListener 
 ( 
 new 
  
 OnCompleteListener<Void> 
 () 
  
 { 
  
 @Override 
  
 public 
  
 void 
  
 onComplete 
 ( 
 @NonNull 
  
 Task<Void> 
  
 task 
 ) 
  
 { 
  
 Log 
 . 
 d 
 ( 
 TAG 
 , 
  
 "User re-authenticated." 
 ); 
  
 } 
  
 }); 
  

Import user accounts

You can import user accounts from a file into your Firebase project by using the Firebase CLI's auth:import command. For example:

  firebase 
 auth 
 : 
 import 
  
 users.json 
 -- 
 hash 
 - 
 algo 
 = 
 scrypt 
 -- 
 rounds 
 = 
 8 
 -- 
 mem 
 - 
 cost 
 = 
 14 
 
Design a Mobile Site
View Site in Mobile | Classic
Share by: