Manage Users in Firebase

Create a user

You create a new user in your Firebase project by calling the createUser 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 setting a listener on the Auth object:

Swift

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

Objective-C

 self 
 . 
 handle 
  
 = 
  
 [[ 
 FIRAuth 
  
 auth 
 ] 
  
 addAuthStateDidChangeListener 
 : 
 ^ 
 ( 
 FIRAuth 
  
 * 
 _Nonnull 
  
 auth 
 , 
  
 FIRUser 
  
 * 
 _Nullable 
  
 user 
 ) 
  
 { 
  
 // ... 
  
 }]; 

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.

You can also get the currently signed-in user by using the currentUser property. If a user isn't signed in, currentUser is nil:

Swift

 if 
  
 Auth 
 . 
 auth 
 (). 
 currentUser 
  
 != 
  
 nil 
  
 { 
  
 // User is signed in. 
  
 // ... 
 } 
  
 else 
  
 { 
  
 // No user is signed in. 
  
 // ... 
 } 

Objective-C

 if 
  
 ([ 
 FIRAuth 
  
 auth 
 ]. 
 currentUser 
 ) 
  
 { 
  
 // User is signed in. 
  
 // ... 
 } 
  
 else 
  
 { 
  
 // No user is signed in. 
  
 // ... 
 } 

Get a user's profile

To get a user's profile information, use the properties of an instance of FIRUser . For example:

Swift

 let 
  
 user 
  
 = 
  
 Auth 
 . 
 auth 
 (). 
 currentUser 
 if 
  
 let 
  
 user 
  
 = 
  
 user 
  
 { 
  
 // 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 getTokenWithCompletion:completion: instead. 
  
 let 
  
 uid 
  
 = 
  
 user 
 . 
 uid 
  
 let 
  
 email 
  
 = 
  
 user 
 . 
 email 
  
 let 
  
 photoURL 
  
 = 
  
 user 
 . 
 photoURL 
  
 var 
  
 multiFactorString 
  
 = 
  
 "MultiFactor: " 
  
 for 
  
 info 
  
 in 
  
 user 
 . 
 multiFactor 
 . 
 enrolledFactors 
  
 { 
  
 multiFactorString 
  
 += 
  
 info 
 . 
 displayName 
  
 ?? 
  
 "[DispayName]" 
  
 multiFactorString 
  
 += 
  
 " " 
  
 } 
  
 // ... 
 } 

Objective-C

 FIRUser 
  
 * 
 user 
  
 = 
  
 [ 
 FIRAuth 
  
 auth 
 ]. 
 currentUser 
 ; 
 if 
  
 ( 
 user 
 ) 
  
 { 
  
 // 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 getTokenWithCompletion:completion: instead. 
  
 NSString 
  
 * 
 email 
  
 = 
  
 user 
 . 
 email 
 ; 
  
 NSString 
  
 * 
 uid 
  
 = 
  
 user 
 . 
 uid 
 ; 
  
 NSMutableString 
  
 * 
 multiFactorString 
  
 = 
  
 [ 
 NSMutableString 
  
 stringWithFormat 
 : 
 @"MultiFactor: " 
 ]; 
  
 for 
  
 ( 
 FIRMultiFactorInfo 
  
 * 
 info 
  
 in 
  
 user 
 . 
 multiFactor 
 . 
 enrolledFactors 
 ) 
  
 { 
  
 [ 
 multiFactorString 
  
 appendString 
 : 
 info 
 . 
 displayName 
 ]; 
  
 [ 
 multiFactorString 
  
 appendString 
 : 
 @" " 
 ]; 
  
 } 
  
 NSURL 
  
 * 
 photoURL 
  
 = 
  
 user 
 . 
 photoURL 
 ; 
  
 // ... 
 } 

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 providerData property. For example:

Swift

 let 
  
 userInfo 
  
 = 
  
 Auth 
 . 
 auth 
 (). 
 currentUser 
 ?. 
 providerData 
 [ 
 indexPath 
 . 
 row 
 ] 
 cell 
 ?. 
 textLabel 
 ?. 
 text 
  
 = 
  
 userInfo 
 ?. 
 providerID 
 // Provider-specific UID 
 cell 
 ?. 
 detailTextLabel 
 ?. 
 text 
  
 = 
  
 userInfo 
 ?. 
 uid 

Objective-C

 id<FIRUserInfo> 
  
 userInfo 
  
 = 
  
 [ 
 FIRAuth 
  
 auth 
 ]. 
 currentUser 
 . 
 providerData 
 [ 
 indexPath 
 . 
 row 
 ]; 
 cell 
 . 
 textLabel 
 . 
 text 
  
 = 
  
 [ 
 userInfo 
  
 providerID 
 ]; 
 // Provider-specific UID 
 cell 
 . 
 detailTextLabel 
 . 
 text 
  
 = 
  
 [ 
 userInfo 
  
 uid 
 ]; 

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 UserProfileChangeRequest class. For example:

Swift

 let 
  
 changeRequest 
  
 = 
  
 Auth 
 . 
 auth 
 (). 
 currentUser 
 ?. 
 createProfileChangeRequest 
 () 
 changeRequest 
 ?. 
 displayName 
  
 = 
  
 displayName 
 changeRequest 
 ?. 
 commitChanges 
  
 { 
  
 error 
  
 in 
  
 // ... 
 } 

Objective-C

 FIRUserProfileChangeRequest 
  
 * 
 changeRequest 
  
 = 
  
 [[ 
 FIRAuth 
  
 auth 
 ]. 
 currentUser 
  
 profileChangeRequest 
 ]; 
 changeRequest 
 . 
 displayName 
  
 = 
  
 userInput 
 ; 
 [ 
 changeRequest 
  
 commitChangesWithCompletion 
 :^ 
 ( 
 NSError 
  
 * 
 _Nullable 
  
 error 
 ) 
  
 { 
  
 // ... 
 }]; 

Set a user's email address

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

Swift

 Auth 
 . 
 auth 
 (). 
 currentUser 
 ?. 
 updateEmail 
 ( 
 to 
 : 
  
 email 
 ) 
  
 { 
  
 error 
  
 in 
  
 // ... 
 } 

Objective-C

 [[ 
 FIRAuth 
  
 auth 
 ]. 
 currentUser 
  
 updateEmail 
 : 
 userInput 
  
 completion 
 :^ 
 ( 
 NSError 
  
 * 
 _Nullable 
  
 error 
 ) 
  
 { 
  
 // ... 
 }]; 

Send a user a verification email

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

Swift

 Auth 
 . 
 auth 
 (). 
 currentUser 
 ?. 
 sendEmailVerification 
  
 { 
  
 error 
  
 in 
  
 // ... 
 } 

Objective-C

 [[ 
 FIRAuth 
  
 auth 
 ]. 
 currentUser 
  
 sendEmailVerificationWithCompletion 
 :^ 
 ( 
 NSError 
  
 * 
 _Nullable 
  
 error 
 ) 
  
 { 
  
 // ... 
 }]; 

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:

Swift

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

Objective-C

 [ 
 FIRAuth 
  
 auth 
 ]. 
 languageCode 
  
 = 
  
 @"fr" 
 ; 
 // To apply the default app language instead of explicitly setting it. 
 // [[FIRAuth auth] useAppLanguage]; 

Set a user's password

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

Swift

 Auth 
 . 
 auth 
 (). 
 currentUser 
 ?. 
 updatePassword 
 ( 
 to 
 : 
  
 password 
 ) 
  
 { 
  
 error 
  
 in 
  
 // ... 
 } 

Objective-C

 [[ 
 FIRAuth 
  
 auth 
 ]. 
 currentUser 
  
 updatePassword 
 : 
 userInput 
  
 completion 
 :^ 
 ( 
 NSError 
  
 * 
 _Nullable 
  
 error 
 ) 
  
 { 
  
 // ... 
 }]; 

Send a password reset email

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

Swift

 Auth 
 . 
 auth 
 (). 
 sendPasswordReset 
 ( 
 withEmail 
 : 
  
 email 
 ) 
  
 { 
  
 error 
  
 in 
  
 // ... 
 } 

Objective-C

 [[ 
 FIRAuth 
  
 auth 
 ] 
  
 sendPasswordResetWithEmail 
 : 
 userInput 
  
 completion 
 :^ 
 ( 
 NSError 
  
 * 
 _Nullable 
  
 error 
 ) 
  
 { 
  
 // ... 
 }]; 

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:

Swift

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

Objective-C

 [ 
 FIRAuth 
  
 auth 
 ]. 
 languageCode 
  
 = 
  
 @"fr" 
 ; 
 // To apply the default app language instead of explicitly setting it. 
 // [[FIRAuth 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:

Swift

  let 
  
 user 
  
 = 
  
 Auth 
 . 
 auth 
 (). 
 currentUser 
 user 
 ?. 
 delete 
  
 { 
  
 error 
  
 in 
  
 if 
  
 let 
  
 error 
  
 = 
  
 error 
  
 { 
  
 // An error happened. 
  
 } 
  
 else 
  
 { 
  
 // Account deleted. 
  
 } 
 } 
 

Objective-C

  FIRUser 
  
 * 
 user 
  
 = 
  
 [ 
 FIRAuth 
  
 auth 
 ]. 
 currentUser 
 ; 
 [ 
 user 
  
 deleteWithCompletion 
 :^ 
 ( 
 NSError 
  
 * 
 _Nullable 
  
 error 
 ) 
  
 { 
  
 if 
  
 ( 
 error 
 ) 
  
 { 
  
 // An error happened. 
  
 } 
  
 else 
  
 { 
  
 // 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 with the FIRAuthErrorCodeCredentialTooOld error. When this happens, re-authenticate the user by getting new sign-in credentials from the user and passing the credentials to reauthenticate . For example:

Swift

  let 
  
 user 
  
 = 
  
 Auth 
 . 
 auth 
 (). 
 currentUser 
 var 
  
 credential 
 : 
  
 AuthCredential 
 // Prompt the user to re-provide their sign-in credentials 
 user 
 ?. 
 reauthenticate 
 ( 
 with 
 : 
  
 credential 
 ) 
  
 { 
  
 error 
  
 in 
  
 if 
  
 let 
  
 error 
  
 = 
  
 error 
  
 { 
  
 // An error happened. 
  
 } 
  
 else 
  
 { 
  
 // User re-authenticated. 
  
 } 
 } 
 

Objective-C

  FIRUser 
  
 * 
 user 
  
 = 
  
 [ 
 FIRAuth 
  
 auth 
 ]. 
 currentUser 
 ; 
 FIRAuthCredential 
  
 * 
 credential 
 ; 
 // Prompt the user to re-provide their sign-in credentials 
 [ 
 user 
  
 reauthenticateWithCredential 
 : 
 credential 
  
 completion 
 :^ 
 ( 
 NSError 
  
 * 
 _Nullable 
  
 error 
 ) 
  
 { 
  
 if 
  
 ( 
 error 
 ) 
  
 { 
  
 // An error happened. 
  
 } 
  
 else 
  
 { 
  
 // 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: