Create a user
You create a new user in your Firebase project by calling the
createUserWithEmail:password:completion:
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:
Objective-C
self.handle = [[FIRAuth auth]
addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
// ...
}];
Swift
handle = FIRAuth.auth()?.addStateDidChangeListener() { (auth, user) 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.
You can also get the currently signed-in user by using the currentUser
property. If a user isn't signed in, currentUser is nil:
Objective-C
if ([FIRAuth auth].currentUser) {
// User is signed in.
// ...
} else {
// No user is signed in.
// ...
}
Swift
if FIRAuth.auth()?.currentUser != nil {
// 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:
Objective-C
FIRUser *user = [FIRAuth auth].currentUser; NSString *email = user.email; // 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 *uid = user.uid; NSURL *photoURL = user.photoURL;
Swift
let user = FIRAuth.auth()?.currentUser // 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 email = user?.email let uid = user?.uid let 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:
Objective-C
id<FIRUserInfo> userInfo = [FIRAuth auth].currentUser.providerData[indexPath.row]; cell.textLabel.text = [userInfo providerID]; // Provider-specific UID cell.detailTextLabel.text = [userInfo uid];
Swift
let userInfo = FIRAuth.auth()?.currentUser?.providerData[(indexPath as NSIndexPath).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 FIRUserProfileChangeRequest class. For
example:
Objective-C
FIRUserProfileChangeRequest *changeRequest =
[[FIRAuth auth].currentUser profileChangeRequest];
changeRequest.displayName = userInput;
[changeRequest commitChangesWithCompletion:^(NSError *_Nullable error) {
// ...
}];
Swift
let changeRequest = FIRAuth.auth()?.currentUser?.profileChangeRequest()
changeRequest?.displayName = userInput
changeRequest?.commitChanges() { (error) in
// ...
}
Set a user's email address
You can set a user's email address with the updateEmail:completion: method.
For example:
Objective-C
[[FIRAuth auth]
.currentUser
updateEmail:userInput
completion:^(NSError *_Nullable error) {
// ...
}];
Swift
FIRAuth.auth()?.currentUser?.updateEmail(userInput) { (error) in
// ...
}
Send a user a verification email
You can send an address verification email to a user with the
sendEmailVerificationWithCompletion: method. For example:
Objective-C
[[FIRAuth auth]
.currentUser sendEmailVerificationWithCompletion:^(NSError *_Nullable error) {
// ...
}];
Swift
FIRAuth.auth()?.currentUser?.sendEmailVerification(completion: { (error) in
// ...
})
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.
Set a user's password
You can set a user's password with the updatePassword:completion: method. For
example:
Objective-C
[[FIRAuth auth]
.currentUser
updatePassword:userInput
completion:^(NSError *_Nullable error) {
// ...
}];
Swift
FIRAuth.auth()?.currentUser?.updatePassword(userInput) { (error) in
// ...
}
Send a password reset email
You can send a password reset email to a user with the
sendPasswordResetWithEmail:completion: method. For example:
Objective-C
[[FIRAuth auth]
sendPasswordResetWithEmail:userInput
completion:^(NSError *_Nullable error) {
// ...
}];
Swift
FIRAuth.auth()?.sendPasswordReset(withEmail: userInput) { (error) in
// ...
}
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.
You can also send password reset emails from the Firebase console.
Delete a user
You can delete a user account with the deleteWithCompletion method. For
example:
Objective-C
FIRUser *user = [FIRAuth auth].currentUser;
[user deleteWithCompletion:^(NSError *_Nullable error) {
if (error) {
// An error happened.
} else {
// Account deleted.
}
}];
Swift
let user = FIRAuth.auth()?.currentUser
user?.delete { error in
if let error = 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:
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.
}
}];
Swift
let user = FIRAuth.auth()?.currentUser
var credential: FIRAuthCredential
// 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.
}
}
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

