In your module (app-level) Gradle file
(usually <project>/<app-module>/build.gradle.kts or
<project>/<app-module>/build.gradle),
add the dependency for the Firebase Authentication library for Android. We recommend using the
Firebase Android BoM
to control library versioning.
dependencies{// Import the BoM for the Firebase platformimplementation(platform("com.google.firebase:firebase-bom:34.12.0"))// Add the dependency for the Firebase Authentication library// When using the BoM, you don't specify versions in Firebase library dependenciesimplementation("com.google.firebase:firebase-auth")}
By using the Firebase Android BoM,
your app will always use compatible versions of Firebase Android libraries.
(Alternative)
Add Firebase library dependencies without using the BoM
If you choose not to use the Firebase BoM, you must specify each Firebase library version
in its dependency line.
Note that if you use multiple Firebase libraries in your app, we strongly
recommend using the BoM to manage library versions, which ensures that all versions are
compatible.
dependencies{// Add the dependency for the Firebase Authentication library// When NOT using the BoM, you must specify versions in Firebase library dependenciesimplementation("com.google.firebase:firebase-auth:24.0.1")}
To use an authentication provider, you need to enable it in the
Firebase console. Go to the Sign-in Method page in the Firebase Authentication
section to enable Email/Password sign-in and any other identity providers
you want for your app.
(Optional) Prototype and test with Firebase Local Emulator Suite
Before talking about how your app authenticates users, let's introduce a set of
tools you can use to prototype and test Authentication functionality:
Firebase Local Emulator Suite. If you're deciding among authentication techniques
and providers, trying out different data models with public and private data
using Authentication and Firebase Security Rules, or prototyping sign-in UI designs, being able to
work locally without deploying live services can be a great idea.
An Authentication emulator is part of the Local Emulator Suite, which
enables your app to interact with emulated database content and config, as
well as optionally your emulated project resources (functions, other databases,
and security rules).
Using the Authentication emulator involves just a few steps:
Adding a line of code to your app's test config to connect to the emulator.
From the root of your local project directory, running firebase emulators:start.
Using the Local Emulator Suite UI for interactive prototyping, or the
Authentication emulator REST API for non-interactive testing.
When initializing your Activity, check to see if the user is currently signed
in.
Kotlin
publicoverridefunonStart(){super.onStart()// Check if user is signed in (non-null) and update UI accordingly.valcurrentUser=auth.currentUserif(currentUser!=null){reload()}}
Java
@OverridepublicvoidonStart(){super.onStart();// Check if user is signed in (non-null) and update UI accordingly.FirebaseUsercurrentUser=mAuth.getCurrentUser();if(currentUser!=null){reload();}}
Sign up new users
Create a new createAccount method that takes in an email address and password,
validates them, and then creates a new user with the
createUserWithEmailAndPassword
method.
Kotlin
auth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(this){task->
if(task.isSuccessful){// Sign in success, update UI with the signed-in user's informationLog.d(TAG,"createUserWithEmail:success")valuser=auth.currentUserupdateUI(user)}else{// If sign in fails, display a message to the user.Log.w(TAG,"createUserWithEmail:failure",task.exception)Toast.makeText(baseContext,"Authentication failed.",Toast.LENGTH_SHORT,).show()updateUI(null)}}
Java
mAuth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(this,newOnCompleteListener<AuthResult>(){@OverridepublicvoidonComplete(@NonNullTask<AuthResult>task){if(task.isSuccessful()){// Sign in success, update UI with the signed-in user's informationLog.d(TAG,"createUserWithEmail:success");FirebaseUseruser=mAuth.getCurrentUser();updateUI(user);}else{// If sign in fails, display a message to the user.Log.w(TAG,"createUserWithEmail:failure",task.getException());Toast.makeText(EmailPasswordActivity.this,"Authentication failed.",Toast.LENGTH_SHORT).show();updateUI(null);}}});
Add a form to register new users with their email and password and call this new
method when it is submitted. You can see an example in our
quickstart sample.
Sign in existing users
Create a new signIn method which takes in an email address and password,
validates them, and then signs a user in with the
signInWithEmailAndPassword method.
Kotlin
auth.signInWithEmailAndPassword(email,password).addOnCompleteListener(this){task->
if(task.isSuccessful){// Sign in success, update UI with the signed-in user's informationLog.d(TAG,"signInWithEmail:success")valuser=auth.currentUserupdateUI(user)}else{// If sign in fails, display a message to the user.Log.w(TAG,"signInWithEmail:failure",task.exception)Toast.makeText(baseContext,"Authentication failed.",Toast.LENGTH_SHORT,).show()updateUI(null)}}
Java
mAuth.signInWithEmailAndPassword(email,password).addOnCompleteListener(this,newOnCompleteListener<AuthResult>(){@OverridepublicvoidonComplete(@NonNullTask<AuthResult>task){if(task.isSuccessful()){// Sign in success, update UI with the signed-in user's informationLog.d(TAG,"signInWithEmail:success");FirebaseUseruser=mAuth.getCurrentUser();updateUI(user);}else{// If sign in fails, display a message to the user.Log.w(TAG,"signInWithEmail:failure",task.getException());Toast.makeText(EmailPasswordActivity.this,"Authentication failed.",Toast.LENGTH_SHORT).show();updateUI(null);}}});
Add a form to sign in users with their email and password and call this new
method when it is submitted. You can see an example in our
quickstart sample.
Access user information
If a user has signed in successfully you can get their account data at
any point with the getCurrentUser method.
Kotlin
valuser=Firebase.auth.currentUseruser?.let{// Name, email address, and profile photo Urlvalname=it.displayNamevalemail=it.emailvalphotoUrl=it.photoUrl// Check if user's email is verifiedvalemailVerified=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.valuid=it.uid}
Java
FirebaseUseruser=FirebaseAuth.getInstance().getCurrentUser();if(user!=null){// Name, email address, and profile photo UrlStringname=user.getDisplayName();Stringemail=user.getEmail();UriphotoUrl=user.getPhotoUrl();// Check if user's email is verifiedbooleanemailVerified=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.Stringuid=user.getUid();}
Next Steps
Explore the guides on adding other identity and authentication services:
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2026-04-17 UTC."],[],[]]