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, or by using the Admin SDK .
Get the currently signed-in user
The recommended way to get the current user is by setting an observer on the Auth object:
Web
import { getAuth , onAuthStateChanged } from "firebase/auth" ; const auth = getAuth (); onAuthStateChanged ( auth , ( user ) = > { if ( user ) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/auth.user const uid = user . uid ; // ... } else { // User is signed out // ... } });
Web
firebase . auth (). onAuthStateChanged (( user ) = > { if ( user ) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/v8/firebase.User var uid = user . uid ; // ... } else { // User is signed out // ... } });
By using an observer, you ensure that the Auth object isn't in an intermediate
state—such as initialization—when you get the current user. When you
use signInWithRedirect
, the onAuthStateChanged
observer waits until getRedirectResult
resolves before triggering.
You can also get the currently signed-in user by using the currentUser
property. If a user isn't signed in, currentUser
is null:
Web
import { getAuth } from "firebase/auth" ; const auth = getAuth (); const user = auth . currentUser ; if ( user ) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/auth.user // ... } else { // No user is signed in. }
Web
const user = firebase . auth (). currentUser ; if ( user ) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/v8/firebase.User // ... } 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 User
. For example:
Web
import { getAuth } from "firebase/auth" ; const auth = getAuth (); const user = auth . currentUser ; if ( user !== null ) { // The user object has basic properties such as display name, email, etc. const displayName = user . displayName ; const email = user . email ; const photoURL = user . photoURL ; const emailVerified = user . emailVerified ; // 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 User.getToken() instead. const uid = user . uid ; }
Web
const user = firebase . auth (). currentUser ; if ( user !== null ) { // The user object has basic properties such as display name, email, etc. const displayName = user . displayName ; const email = user . email ; const photoURL = user . photoURL ; const emailVerified = user . emailVerified ; // 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 User.getIdToken() instead. const uid = user . uid ; }
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:
Web
import { getAuth } from "firebase/auth" ; const auth = getAuth (); const user = auth . currentUser ; if ( user !== null ) { user . providerData . forEach (( profile ) = > { console . log ( "Sign-in provider: " + profile . providerId ); console . log ( " Provider-specific UID: " + profile . uid ); console . log ( " Name: " + profile . displayName ); console . log ( " Email: " + profile . email ); console . log ( " Photo URL: " + profile . photoURL ); }); }
Web
const user = firebase . auth (). currentUser ; if ( user !== null ) { user . providerData . forEach (( profile ) = > { console . log ( "Sign-in provider: " + profile . providerId ); console . log ( " Provider-specific UID: " + profile . uid ); console . log ( " Name: " + profile . displayName ); console . log ( " Email: " + profile . email ); console . log ( " Photo URL: " + profile . photoURL ); }); }
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:
Web
import { getAuth , updateProfile } from "firebase/auth" ; const auth = getAuth (); updateProfile ( auth . currentUser , { displayName : "Jane Q. User" , photoURL : "https://example.com/jane-q-user/profile.jpg" }). then (() = > { // Profile updated! // ... }). catch (( error ) = > { // An error occurred // ... });
Web
const user = firebase . auth (). currentUser ; user . updateProfile ({ displayName : "Jane Q. User" , photoURL : "https://example.com/jane-q-user/profile.jpg" }). then (() = > { // Update successful // ... }). catch (( error ) = > { // An error occurred // ... });
Set a user's email address
You can set a user's email address with the updateEmail
method. For example:
Web
import { getAuth , updateEmail } from "firebase/auth" ; const auth = getAuth (); updateEmail ( auth . currentUser , "user@example.com" ). then (() = > { // Email updated! // ... }). catch (( error ) = > { // An error occurred // ... });
Web
const user = firebase . auth (). currentUser ; user . updateEmail ( "user@example.com" ). then (() = > { // Update successful // ... }). catch (( error ) = > { // An error occurred // ... });
Send a user a verification email
You can send an address verification email to a user with the sendEmailVerification
method. For example:
Web
import { getAuth , sendEmailVerification } from "firebase/auth" ; const auth = getAuth (); sendEmailVerification ( auth . currentUser ) . then (() = > { // Email verification sent! // ... });
Web
firebase . auth (). currentUser . sendEmailVerification () . then (() = > { // Email verification 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:
Web
import { getAuth } from "firebase/auth" ; const auth = getAuth (); auth . languageCode = 'it' ; // To apply the default browser preference instead of explicitly setting it. // auth.useDeviceLanguage();