Authenticate with Firebase on Android Using a Custom Authentication System  |  Firebase Authentication (2024)

Firebase Demo Day is here! Watch demos of how to build and grow AI-powered, full stack apps using the best of Google.

Stay organized with collections Save and categorize content based on your preferences.

You can integrate Firebase Authentication with a custom authentication system bymodifying your authentication server to produce custom signed tokens when a usersuccessfully signs in. Your app receives this token and uses it to authenticatewith Firebase.

Before you begin

  1. If you haven't already, add Firebase to your Android project.
  2. 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 theFirebase Android BoMto control library versioning.
    dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.7.0")) // Add the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("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 dependencies implementation("com.google.firebase:firebase-auth:22.3.0")}
    Looking for a Kotlin-specific library module? Starting inOctober 2023(Firebase BoM 32.5.0), both Kotlin and Java developers candepend on the main library module (for details, see theFAQ about this initiative).
  3. Get your project's server keys:
    1. Go to the Service Accounts page in your project's settings.
    2. Click Generate New Private Key at the bottom of the Firebase Admin SDK section of the Service Accounts page.
    3. The new service account's public/private key pair is automatically saved on your computer. Copy this file to your authentication server.

Authenticate with Firebase

  1. In your sign-in activity's onCreate method, get the shared instance of the FirebaseAuth object:

    Kotlin+KTX

    private lateinit var auth: FirebaseAuth// ...// Initialize Firebase Authauth = Firebase.auth

    Java

    private FirebaseAuth mAuth;// ...// Initialize Firebase AuthmAuth = FirebaseAuth.getInstance();
  2. When initializing your Activity, check to see if the user is currently signed in:

    Kotlin+KTX

    public override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser updateUI(currentUser)}

    Java

    @Overridepublic void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); updateUI(currentUser);}
  3. When users sign in to your app, send their sign-in credentials (for example, their username and password) to your authentication server. Your server checks the credentials and returns a custom token if they are valid.
  4. After you receive the custom token from your authentication server, pass it to signInWithCustomToken to sign in the user:

    Kotlin+KTX

    customToken?.let { auth.signInWithCustomToken(it) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithCustomToken:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithCustomToken:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }}

    Java

    mAuth.signInWithCustomToken(mCustomToken) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithCustomToken:success"); FirebaseUser user = mAuth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithCustomToken:failure", task.getException()); Toast.makeText(CustomAuthActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
    If sign-in succeeds, the AuthStateListener you can use the getCurrentUser method to get the user's account data.

Next steps

After a user signs in for the first time, a new user account is created andlinked to the credentials—that is, the user name and password, phonenumber, or auth provider information—the user signed in with. This newaccount is stored as part of your Firebase project, and can be used to identifya user across every app in your project, regardless of how the user signs in.

  • In your apps, you can get the user's basic profile information from theFirebaseUser object. See Manage Users.

  • In your Firebase Realtime Database and Cloud Storage Security Rules, you can get the signed-in user's unique user ID from the auth variable, and use it to control what data a user can access.

You can allow users to sign in to your app using multiple authenticationproviders by linking auth provider credentials to anexisting user account.

To sign out a user, call signOut:

Kotlin+KTX

Firebase.auth.signOut()

Java

FirebaseAuth.getInstance().signOut();

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2023-12-14 UTC.

As an expert in Firebase development and authentication systems, let me provide a comprehensive breakdown of the concepts covered in the provided article:

  1. Firebase Overview:

    • Products: Firebase offers a suite of products such as Authentication, Realtime Database, Cloud Firestore, Storage, Cloud Functions, Hosting, and more.
    • Solutions: The article focuses on the Authentication solution within Firebase.
  2. Authentication:

    • Introduction: Explains the process of connecting an app to Firebase Authentication.
    • Emulator Suite: Provides an overview of the Emulator Suite for local development and testing.
    • Authentication Methods:
      • Password Authentication
      • Email Link Authentication
      • Social Logins (Google, Facebook, Apple, Twitter, GitHub, Microsoft, Yahoo, Game Center)
      • Phone Number Authentication
      • Anonymous Authentication
      • Multi-factor Authentication
      • Custom Auth System
      • Cross-app authentication with shared Keychain
      • Linking Multiple Auth Providers
  3. Platform-specific Authentication Guides:

    • iOS: Covers authentication for iOS apps.
    • Android: Covers authentication for Android apps.
    • Flutter: Covers authentication for Flutter apps.
    • Web: Covers authentication for web apps.
    • C++ and Unity: Covers authentication for C++ and Unity applications.
  4. Admin Features:

    • Introduction: Manages users, imports and creates custom tokens, verifies ID tokens, and more.
  5. Cloud Firestore:

    • Introduction: Provides an overview of Cloud Firestore, a NoSQL document database.
    • Data Management:
      • Add and manage data
      • Transactions and batched writes
      • Data queries and indexing
      • Real-time updates
    • Security Rules: Explains how to secure and validate data using security rules.
    • Firestore Lite Web SDK: Offers a lightweight SDK for web applications.
    • Use Cases and Best Practices: Covers various use cases, solutions using Firebase Extensions, and best practices.
  6. Realtime Database:

    • Introduction: Covers the basics of the Realtime Database.
    • Data Management: Similar to Firestore, covers structure, read and write operations, and offline capabilities.
    • Security & Rules: Explains how to set up security rules for the Realtime Database.
  7. Storage:

    • Introduction: Covers Firebase Cloud Storage for file upload, download, and management.
    • Security & Rules: Explains how to set up security rules for Cloud Storage.
  8. Machine Learning:

    • Introduction: Covers using custom models, Cloud Vision APIs, and ML Kit for Firebase.
    • Vision Features: Recognize text, label images, recognize landmarks, and more.
  9. Hosting:

    • Introduction: Covers hosting, deployment, dynamic content, and microservices.
  10. Cloud Functions:

    • Introduction: Explains Cloud Functions, including triggers, deployment, and runtime options.
    • Use Cases: Covers various use cases and examples of using Cloud Functions.
  11. Security Rules:

    • Introduction: Provides an overview of Firebase Security Rules.
    • Rules Language: Describes how the Security Rules language works and how to write basic and secure rules.
    • Usage and Performance: Explains billing, limits, monitoring, and performance optimization.
  12. App Check:

    • Introduction: Explains App Check for securing non-Firebase resources.
  13. Extensions:

    • Introduction: Covers use cases, installation, management, and various extensions provided by Firebase.
  14. Conclusion:

    • Sign-out Process: Demonstrates how to sign out a user from Firebase Authentication.

In summary, the article provides a comprehensive guide to Firebase, covering authentication, databases (Firestore and Realtime Database), storage, machine learning, hosting, cloud functions, security rules, and various features that Firebase offers for app development across multiple platforms.

Authenticate with Firebase on Android Using a Custom Authentication System  |  Firebase Authentication (2024)
Top Articles
Latest Posts
Article information

Author: Prof. An Powlowski

Last Updated:

Views: 6159

Rating: 4.3 / 5 (64 voted)

Reviews: 95% of readers found this page helpful

Author information

Name: Prof. An Powlowski

Birthday: 1992-09-29

Address: Apt. 994 8891 Orval Hill, Brittnyburgh, AZ 41023-0398

Phone: +26417467956738

Job: District Marketing Strategist

Hobby: Embroidery, Bodybuilding, Motor sports, Amateur radio, Wood carving, Whittling, Air sports

Introduction: My name is Prof. An Powlowski, I am a charming, helpful, attractive, good, graceful, thoughtful, vast person who loves writing and wants to share my knowledge and understanding with you.