firebase.auth. Auth
The Firebase Auth service interface.
Do not call this constructor directly. Instead, use
firebase.auth().
See Firebase Authentication for a full guide on how to use the Firebase Auth service.
Properties
app
non-null firebase.app.App
The app associated with the Auth service instance.
Example
var app = auth.app;
currentUser
(firebase.User or null)
The currently signed-in user (or null).
Methods
applyActionCode
applyActionCode(code) returns firebase.Promise containing void
Applies a verification code sent to the user by email or other out-of-band mechanism.
Error Codes
- auth/expired-action-code
- Thrown if the action code has expired.
- auth/invalid-action-code
- Thrown if the action code is invalid. This can happen if the code is malformed or has already been used.
- auth/user-disabled
- Thrown if the user corresponding to the given action code has been disabled.
- auth/user-not-found
- Thrown if there is no user corresponding to the action code. This may have happened if the user was deleted between when the action code was issued and when this method was called.
Parameter |
|
|---|---|
|
code |
string A verification code sent to the user. |
- Returns
-
non-null firebase.Promise containing void
checkActionCode
checkActionCode(code) returns firebase.Promise containing non-null firebase.auth.ActionCodeInfo
Checks a verification code sent to the user by email or other out-of-band mechanism.
Returns metadata about the code.
Error Codes
- auth/expired-action-code
- Thrown if the action code has expired.
- auth/invalid-action-code
- Thrown if the action code is invalid. This can happen if the code is malformed or has already been used.
- auth/user-disabled
- Thrown if the user corresponding to the given action code has been disabled.
- auth/user-not-found
- Thrown if there is no user corresponding to the action code. This may have happened if the user was deleted between when the action code was issued and when this method was called.
Parameter |
|
|---|---|
|
code |
string A verification code sent to the user. |
- Returns
-
non-null firebase.Promise containing non-null firebase.auth.ActionCodeInfo
confirmPasswordReset
confirmPasswordReset(code, newPassword) returns firebase.Promise containing void
Completes the password reset process, given a confirmation code and new password.
Error Codes
- auth/expired-action-code
- Thrown if the password reset code has expired.
- auth/invalid-action-code
- Thrown if the password reset code is invalid. This can happen if the code is malformed or has already been used.
- auth/user-disabled
- Thrown if the user corresponding to the given password reset code has been disabled.
- auth/user-not-found
- Thrown if there is no user corresponding to the password reset code. This may have happened if the user was deleted between when the code was issued and when this method was called.
- auth/weak-password
- Thrown if the new password is not strong enough.
Parameter |
|
|---|---|
|
code |
string The confirmation code send via email to the user. |
|
newPassword |
string The new password. |
- Returns
-
non-null firebase.Promise containing void
createUserWithEmailAndPassword
createUserWithEmailAndPassword(email, password) returns firebase.Promise containing non-null firebase.User
Creates a new user account associated with the specified email address and password.
On successful creation of the user account, this user will also be signed in to your application.
User account creation can fail if the account already exists or the password is invalid.
Note: The email address acts as a unique identifier for the user and enables an email-based password reset. This function will create a new user account and set the initial user password.
Error Codes
- auth/email-already-in-use
- Thrown if there already exists an account with the given email address.
- auth/invalid-email
- Thrown if the email address is not valid.
- auth/operation-not-allowed
- Thrown if email/password accounts are not enabled. Enable email/password accounts in the Firebase Console, under the Auth tab.
- auth/weak-password
- Thrown if the password is not strong enough.
Parameter |
|
|---|---|
|
|
string The user's email address. |
|
password |
string The user's chosen password. |
- Returns
-
non-null firebase.Promise containing non-null firebase.User
Example
firebase.auth().createUserWithEmailAndPassword(email, password)
.catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
if (errorCode == 'auth/weak-password') {
alert('The password is too weak.');
} else {
alert(errorMessage);
}
console.log(error);
});
fetchProvidersForEmail
fetchProvidersForEmail(email) returns firebase.Promise containing non-null Array of string
Gets the list of provider IDs that can be used to sign in for the given email address. Useful for an "identifier-first" sign-in flow.
Error Codes
- auth/invalid-email
- Thrown if the email address is not valid.
Parameter |
|
|---|---|
|
|
string An email address. |
- Returns
-
non-null firebase.Promise containing non-null Array of string
getRedirectResult
getRedirectResult() returns firebase.Promise containing non-null firebase.auth.UserCredential
Returns a UserCredential from the redirect-based sign-in flow.
If sign-in succeeded, returns the signed in user. If sign-in was unsuccessful, fails with an error. If no redirect operation was called, returns a UserCredential with a null User.
Error Codes
- auth/account-exists-with-different-credential
- Thrown if there already exists an account with the email address asserted by the credential. Resolve this by calling firebase.auth.Auth#fetchProvidersForEmail with the error.email and then asking the user to sign in using one of the returned providers. Once the user is signed in, the original credential retrieved from the error.credential can be linked to the user with firebase.User#link to prevent the user from signing in again to the original provider via popup or redirect. If you are using redirects for sign in, save the credential in session storage and then retrieve on redirect and repopulate the credential using for example firebase.auth.GoogleAuthProvider#credential depending on the credential provider id and complete the link.
- auth/auth-domain-config-required
- Thrown if authDomain configuration is not provided when calling firebase.initializeApp(). Check Firebase Console for instructions on determining and passing that field.
- auth/credential-already-in-use
- Thrown if the account corresponding to the credential already exists among your users, or is already linked to a Firebase User. For example, this error could be thrown if you are upgrading an anonymous user to a Google user by linking
a Google credential to it and the Google credential used is already associated with an existing Firebase Google user. An
error.emailanderror.credential( firebase.auth.AuthCredential) fields are also provided. You can recover from this error by signing in with that credential directly via firebase.auth.Auth#signInWithCredential. - auth/email-already-in-use
- Thrown if the email corresponding to the credential already exists among your users. When thrown while linking a credential to an existing user, an
error.emailanderror.credential( firebase.auth.AuthCredential) fields are also provided. You have to link the credential to the existing user with that email if you wish to continue signing in with that credential. To do so, call firebase.auth.Auth#fetchProvidersForEmail, sign in toerror.emailvia one of the providers returned and then firebase.User#link the original credential to that newly signed in user. - auth/operation-not-allowed
- Thrown if the type of account corresponding to the credential is not enabled. Enable the account type in the Firebase Console, under the Auth tab.
- auth/operation-not-supported-in-this-environment
- Thrown if this operation is not supported in the environment your application is running on. "location.protocol" must be http or https.
- auth/timeout
- Thrown typically if the app domain is not authorized for OAuth operations for your Firebase project. Edit the list of authorized domains from the Firebase console.
- Returns
-
non-null firebase.Promise containing non-null firebase.auth.UserCredential
Example
// First, we perform the signInWithRedirect.
// Creates the provider object.
var provider = new firebase.auth.FacebookAuthProvider();
// You can add additional scopes to the provider:
provider.addScope('email');
provider.addScope('user_friends');
// Sign in with redirect:
auth.signInWithRedirect(provider)
////////////////////////////////////////////////////////////
// The user is redirected to the provider's sign in flow...
////////////////////////////////////////////////////////////
// Then redirected back to the app, where we check the redirect result:
auth.getRedirectResult().then(function(result) {
// The firebase.User instance:
var user = result.user;
// The Facebook firebase.auth.AuthCredential containing the Facebook
// access token:
var credential = result.credential;
}, function(error) {
// The provider's account email, can be used in case of
// auth/account-exists-with-different-credential to fetch the providers
// linked to the email:
var email = error.email;
// The provider's credential:
var credential = error.credential;
// In case of auth/account-exists-with-different-credential error,
// you can fetch the providers using this:
if (error.code === 'auth/account-exists-with-different-credential') {
auth.fetchProvidersForEmail(email).then(function(providers) {
// The returned 'providers' is a list of the available providers
// linked to the email address. Please refer to the guide for a more
// complete explanation on how to recover from this error.
});
}
});
onAuthStateChanged
onAuthStateChanged(nextOrObserver, error, completed) returns function()
Adds an observer for auth state changes.
Parameter |
|
|---|---|
|
nextOrObserver |
(non-null Object or function(nullable firebase.User)) An observer object or a function triggered on change. |
|
error |
Optional function(non-null firebase.auth.Error) Optional A function triggered on auth error. |
|
completed |
Optional function() Optional A function triggered when the observer is removed. |
- Returns
-
non-null function()The unsubscribe function for the observer.
Example
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
}
});
sendPasswordResetEmail
sendPasswordResetEmail(email) returns firebase.Promise containing void
Sends a password reset email to the given email address.
To complete the password reset, call firebase.auth.Auth#confirmPasswordReset with the code supplied in the email sent to the user, along with the new password specified by the user.
Error Codes
- auth/invalid-email
- Thrown if the email address is not valid.
- auth/user-not-found
- Thrown if there is no user corresponding to the email address.
Parameter |
|
|---|---|
|
|
string The email address with the password to be reset. |
- Returns
-
non-null firebase.Promise containing void
signInAnonymously
signInAnonymously() returns firebase.Promise containing non-null firebase.User
Asynchronously signs in as an anonymous user.
If there is already an anonymous user signed in, that user will be returned; otherwise, a new anonymous user identity will be created and returned.
Error Codes
- auth/operation-not-allowed
- Thrown if anonymous accounts are not enabled. Enable anonymous accounts in the Firebase Console, under the Auth tab.
- Returns
-
non-null firebase.Promise containing non-null firebase.User
Example
firebase.auth().signInAnonymously().catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
if (errorCode === 'auth/operation-not-allowed') {
alert('You must enable Anonymous auth in the Firebase Console.');
} else {
console.error(error);
}
});
signInWithCredential
signInWithCredential(credential) returns firebase.Promise containing non-null firebase.User
Asynchronously signs in with the given credentials.
Error Codes
- auth/account-exists-with-different-credential
- Thrown if there already exists an account with the email address asserted by the credential. Resolve this by calling firebase.auth.Auth#fetchProvidersForEmail and then asking the user to sign in using one of the returned providers. Once the user is signed in, the original credential can be linked to the user with firebase.User#link.
- auth/invalid-credential
- Thrown if the credential is malformed or has expired.
- auth/operation-not-allowed
- Thrown if the type of account corresponding to the credential is not enabled. Enable the account type in the Firebase Console, under the Auth tab.
- auth/user-disabled
- Thrown if the user corresponding to the given credential has been disabled.
- auth/user-not-found
- Thrown if signing in with a credential from firebase.auth.EmailAuthProvider#credential and there is no user corresponding to the given email.
- auth/wrong-password
- Thrown if signing in with a credential from firebase.auth.EmailAuthProvider#credential and the password is invalid for the given email, or if the account corresponding to the email does not have a password set.
Parameter |
|
|---|---|
|
credential |
The auth credential. Value must not be null. |
- Returns
-
non-null firebase.Promise containing non-null firebase.User
Example
firebase.auth().signInWithCredential(credential).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// The email of the user's account used.
var email = error.email;
// The firebase.auth.AuthCredential type that was used.
var credential = error.credential;
if (errorCode === 'auth/account-exists-with-different-credential') {
alert('Email already associated with another account.');
// Handle account linking here, if using.
} else {
console.error(error);
}
});
signInWithCustomToken
signInWithCustomToken(token) returns firebase.Promise containing non-null firebase.User
Asynchronously signs in using a custom token.
Custom tokens are used to integrate Firebase Auth with existing auth systems, and must be generated by the auth backend.
Fails with an error if the token is invalid, expired, or not accepted by the Firebase Auth service.
Error Codes
- auth/custom-token-mismatch
- Thrown if the custom token is for a different Firebase App.
- auth/invalid-custom-token
- Thrown if the custom token format is incorrect.
Parameter |
|
|---|---|
|
token |
string The custom token to sign in with. |
- Returns
-
non-null firebase.Promise containing non-null firebase.User
Example
firebase.auth().signInWithCustomToken(token).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
if (errorCode === 'auth/invalid-custom-token') {
alert('The token you provided is not valid.');
} else {
console.error(error);
}
});
signInWithEmailAndPassword
signInWithEmailAndPassword(email, password) returns firebase.Promise containing non-null firebase.User
Asynchronously signs in using an email and password.
Fails with an error if the email address and password do not match.
Note: The user's password is NOT the password used to access the user's email account. The email address serves as a unique identifier for the user, and the password is used to access the user's account in your Firebase project.
See also: firebase.auth.Auth#createUserWithEmailAndPassword.
Error Codes
- auth/invalid-email
- Thrown if the email address is not valid.
- auth/user-disabled
- Thrown if the user corresponding to the given email has been disabled.
- auth/user-not-found
- Thrown if there is no user corresponding to the given email.
- auth/wrong-password
- Thrown if the password is invalid for the given email, or the account corresponding to the email does not have a password set.
Parameter |
|
|---|---|
|
|
string The users email address. |
|
password |
string The users password. |
- Returns
-
non-null firebase.Promise containing non-null firebase.User
Example
firebase.auth().signInWithEmailAndPassword(email, password)
.catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
if (errorCode === 'auth/wrong-password') {
alert('Wrong password.');
} else {
alert(errorMessage);
}
console.log(error);
});
signInWithPopup
signInWithPopup(provider) returns firebase.Promise containing non-null firebase.auth.UserCredential
Authenticates a Firebase client using a popup-based OAuth authentication flow.
If succeeds, returns the signed in user along with the provider's credential. If sign in was unsuccessful, returns an error object containing additional information about the error.
Error Codes
- auth/account-exists-with-different-credential
- Thrown if there already exists an account with the email address asserted by the credential. Resolve this by calling firebase.auth.Auth#fetchProvidersForEmail with the error.email and then asking the user to sign in using one of the returned providers. Once the user is signed in, the original credential retrieved from the error.credential can be linked to the user with firebase.User#link to prevent the user from signing in again to the original provider via popup or redirect. If you are using redirects for sign in, save the credential in session storage and then retrieve on redirect and repopulate the credential using for example firebase.auth.GoogleAuthProvider#credential depending on the credential provider id and complete the link.
- auth/auth-domain-config-required
- Thrown if authDomain configuration is not provided when calling firebase.initializeApp(). Check Firebase Console for instructions on determining and passing that field.
- auth/cancelled-popup-request
- Thrown if successive popup operations are triggered. Only one popup request is allowed at one time. All the popups would fail with this error except for the last one.
- auth/operation-not-allowed
- Thrown if the type of account corresponding to the credential is not enabled. Enable the account type in the Firebase Console, under the Auth tab.
- auth/operation-not-supported-in-this-environment
- Thrown if this operation is not supported in the environment your application is running on. "location.protocol" must be http or https.
- auth/popup-blocked
- Thrown if the popup was blocked by the browser, typically when this operation is triggered outside of a click handler.
- auth/popup-closed-by-user
- Thrown if the popup window is closed by the user without completing the sign in to the provider.
- auth/unauthorized-domain
- Thrown if the app domain is not authorized for OAuth operations for your Firebase project. Edit the list of authorized domains from the Firebase console.
Parameter |
|
|---|---|
|
provider |
The provider to authenticate. The provider has to be an OAuth provider. Non-OAuth providers like firebase.auth.EmailAuthProvider will throw an error. Value must not be null. |
- Returns
-
non-null firebase.Promise containing non-null firebase.auth.UserCredential
Example
// Creates the provider object.
var provider = new firebase.auth.FacebookAuthProvider();
// You can add additional scopes to the provider:
provider.addScope('email');
provider.addScope('user_friends');
// Sign in with popup:
auth.signInWithPopup(provider).then(function(result) {
// The firebase.User instance:
var user = result.user;
// The Facebook firebase.auth.AuthCredential containing the Facebook
// access token:
var credential = result.credential;
}, function(error) {
// The provider's account email, can be used in case of
// auth/account-exists-with-different-credential to fetch the providers
// linked to the email:
var email = error.email;
// The provider's credential:
var credential = error.credential;
// In case of auth/account-exists-with-different-credential error,
// you can fetch the providers using this:
if (error.code === 'auth/account-exists-with-different-credential') {
auth.fetchProvidersForEmail(email).then(function(providers) {
// The returned 'providers' is a list of the available providers
// linked to the email address. Please refer to the guide for a more
// complete explanation on how to recover from this error.
});
}
});
signInWithRedirect
signInWithRedirect(provider) returns firebase.Promise containing void
Authenticates a Firebase client using a full-page redirect flow. To handle the results and errors for this operation, refer to firebase.auth.Auth#getRedirectResult.
Error Codes
- auth/auth-domain-config-required
- Thrown if authDomain configuration is not provided when calling firebase.initializeApp(). Check Firebase Console for instructions on determining and passing that field.
- auth/operation-not-supported-in-this-environment
- Thrown if this operation is not supported in the environment your application is running on. "location.protocol" must be http or https.
- auth/unauthorized-domain
- Thrown if the app domain is not authorized for OAuth operations for your Firebase project. Edit the list of authorized domains from the Firebase console.
Parameter |
|
|---|---|
|
provider |
The provider to authenticate. The provider has to be an OAuth provider. Non-OAuth providers like firebase.auth.EmailAuthProvider will throw an error. Value must not be null. |
- Returns
-
non-null firebase.Promise containing void
signOut
signOut() returns firebase.Promise containing void
Signs out the current user.
- Returns
-
non-null firebase.Promise containing void
verifyPasswordResetCode
verifyPasswordResetCode(code) returns firebase.Promise containing string
Checks a password reset code sent to the user by email or other out-of-band mechanism.
Returns the user's email address if valid.
Error Codes
- auth/expired-action-code
- Thrown if the password reset code has expired.
- auth/invalid-action-code
- Thrown if the password reset code is invalid. This can happen if the code is malformed or has already been used.
- auth/user-disabled
- Thrown if the user corresponding to the given password reset code has been disabled.
- auth/user-not-found
- Thrown if there is no user corresponding to the password reset code. This may have happened if the user was deleted between when the code was issued and when this method was called.
Parameter |
|
|---|---|
|
code |
string A verification code sent to the user. |
- Returns
-
non-null firebase.Promise containing string

