Inizia a utilizzare Firebase Authentication su Android

Connettere l'app a Firebase

Se non l'hai ancora fatto, aggiungi Firebase al tuo progetto Android.

Aggiungere Firebase Authentication all'app

  1. Nel file Gradle del modulo (a livello di app) (in genere <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle), aggiungi la dipendenza per la libreria Firebase Authentication per Android. Ti consigliamo di utilizzare la Firebase Android BoM per controllare il controllo delle versioni della libreria.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.13.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")
    }

    Con la Firebase Android BoM, la tua app utilizzerà sempre versioni compatibili delle librerie Firebase Android.

    (Alternativa)  Aggiungere le dipendenze della libreria Firebase senza utilizzare la BoM

    Se scegli di non utilizzare la Firebase BoM, devi specificare la versione di ogni libreria Firebase nella riga di dipendenza.

    Tieni presente che, se utilizzi più librerie Firebase nella tua app, ti consigliamo vivamente di utilizzare la BoM per gestire le versioni delle librerie, in modo da garantire la compatibilità di tutte le versioni.

    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:24.1.0")
    }

  2. Per utilizzare un provider di autenticazione, devi abilitarlo nella Firebase console. Vai alla pagina Metodo di accesso nella sezione Firebase Authentication per abilitare l'accesso con email/password e tutti gli altri provider di identità che vuoi utilizzare per la tua app.

(Facoltativo) Creare prototipi ed eseguire test con Firebase Local Emulator Suite

Prima di parlare di come la tua app autentica gli utenti, presentiamo un insieme di strumenti che puoi utilizzare per creare prototipi e testare la funzionalità Authentication Firebase Local Emulator Suite. Se stai scegliendo tra tecniche di autenticazione e provider, provando diversi modelli di dati con dati pubblici e privati utilizzando Authentication e Firebase Security Rules, o creando prototipi di UI di accesso, può essere una buona idea poter lavorare localmente senza eseguire il deployment dei servizi live.

Un emulatore Authentication fa parte di Local Emulator Suite, che consente alla tua app di interagire con i contenuti e la configurazione del database emulato, nonché facoltativamente, con le risorse del progetto emulato (funzioni, altri database e regole di sicurezza).

L'utilizzo dell'Authentication emulatore prevede solo alcuni passaggi:

  1. Aggiungere una riga di codice alla configurazione di test dell'app per connettersi all'emulatore.
  2. Eseguire firebase emulators:start dalla radice della directory del progetto locale.
  3. Utilizzare l'UI Local Emulator Suite per la prototipazione interattiva o l'Authentication API REST dell'emulatore per i test non interattivi.

Una guida dettagliata è disponibile all'indirizzo Connettere l'app all'emulatore Authentication. Per ulteriori informazioni, consulta l'Local Emulator Suite introduzione.

Ora continuiamo con la procedura di autenticazione degli utenti.

Controllare lo stato di autenticazione attuale

  1. Dichiara un'istanza di FirebaseAuth.

    Kotlin

    private lateinit var auth: FirebaseAuth

    Java

    private FirebaseAuth mAuth;
  2. Nel metodo onCreate(), inizializza l'istanza FirebaseAuth.

    Kotlin

    // Initialize Firebase Auth
    auth = Firebase.auth

    Java

    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();
  3. Quando inizializzi l'attività, controlla se l'utente ha eseguito l'accesso.

    Kotlin

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

    Java

    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        if(currentUser != null){
            reload();
        }
    }

Registrare nuovi utenti

Crea un nuovo metodo createAccount che accetta un indirizzo email e una password, li convalida e poi crea un nuovo utente con il createUserWithEmailAndPassword metodo.

Kotlin

auth.createUserWithEmailAndPassword(email, password)
    .addOnCompleteListener(this) { task ->
        if (task.isSuccessful) {
            // Sign in success, update UI with the signed-in user's information
            Log.d(TAG, "createUserWithEmail:success")
            val user = auth.currentUser
            updateUI(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, 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, "createUserWithEmail:success");
                    FirebaseUser user = 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);
                }
            }
        });

Aggiungi un modulo per registrare i nuovi utenti con la loro email e password e chiama questo nuovo metodo quando viene inviato. Puoi vedere un esempio nel nostro esempio di avvio rapido.

Accedere agli utenti esistenti

Crea un nuovo metodo signIn che accetta un indirizzo email e una password, li convalida e poi accede a un utente con il signInWithEmailAndPassword metodo.

Kotlin

auth.signInWithEmailAndPassword(email, password)
    .addOnCompleteListener(this) { task ->
        if (task.isSuccessful) {
            // Sign in success, update UI with the signed-in user's information
            Log.d(TAG, "signInWithEmail:success")
            val user = auth.currentUser
            updateUI(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, 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, "signInWithEmail:success");
                    FirebaseUser user = 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);
                }
            }
        });

Aggiungi un modulo per consentire agli utenti di accedere con la loro email e password e chiama questo nuovo metodo quando viene inviato. Puoi vedere un esempio nel nostro esempio di avvio rapido.

Accedere alle informazioni utente

Se un utente ha eseguito l'accesso correttamente, puoi recuperare i dati del suo account in qualsiasi momento con il metodo getCurrentUser.

Kotlin

val user = Firebase.auth.currentUser
user?.let {
    // Name, email address, and profile photo Url
    val name = it.displayName
    val email = it.email
    val photoUrl = it.photoUrl

    // Check if user's email is verified
    val emailVerified = 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.
    val uid = it.uid
}

Java

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    // Name, email address, and profile photo Url
    String name = user.getDisplayName();
    String email = user.getEmail();
    Uri photoUrl = user.getPhotoUrl();

    // Check if user's email is verified
    boolean emailVerified = 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.
    String uid = user.getUid();
}

Passaggi successivi

Esplora le guide per aggiungere altri servizi di identità e autenticazione: