Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Autenticati con Firebase utilizzando account basati su password su Android

Puoi utilizzare Firebase Authentication per consentire ai tuoi utenti di autenticarsi con Firebase utilizzando i loro indirizzi e-mail e password e per gestire gli account basati su password della tua app.

Prima di iniziare

  1. Se non l'hai già fatto, aggiungi Firebase al tuo progetto Android .
  2. Nel tuo file build.gradle livello di build.gradle , assicurati di includere il repository Maven di Google in entrambe le sezioni buildscript e allprojects .
  3. Aggiungi la dipendenza per la libreria Android di Firebase Authentication al file Gradle del modulo (a livello di app) (di solito app/build.gradle ):

    implementation 'com.google.firebase:firebase-auth:19.4.0'
    
  4. Se non hai ancora collegato la tua app al tuo progetto Firebase, fallo dalla console Firebase .
  5. Abilita accesso e-mail / password:
    1. Nella console Firebase , apri la sezione Autenticazione .
    2. Nella scheda Metodo di accesso , abilita il metodo di accesso tramite e- mail / password e fai clic su Salva .

Crea un account basato su password

Per creare un nuovo account utente con una password, completa i seguenti passaggi nell'attività di accesso della tua app:

  1. Nel metodo onCreate della onCreate attività di onCreate , ottieni l'istanza condivisa dell'oggetto FirebaseAuth :

    Giava

    private FirebaseAuth mAuth;
    // ...
    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();

    Kotlin + KTX

    private lateinit var auth: FirebaseAuth
    // ...
    // Initialize Firebase Auth
    auth = Firebase.auth
  2. Durante l'inizializzazione della tua attività, controlla se l'utente è attualmente connesso:

    Giava

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

    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)
    }
  3. Quando un nuovo utente si registra utilizzando il modulo di registrazione della tua app, completa tutti i nuovi passaggi di convalida dell'account richiesti dalla tua app, ad esempio la verifica che la password del nuovo account sia stata digitata correttamente e soddisfi i tuoi requisiti di complessità.
  4. Crea un nuovo account passando l'indirizzo email e la password del nuovo utente a createUserWithEmailAndPassword :

    Giava

    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);
                    }
    
                    // ...
                }
            });

    Kotlin + KTX

    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)
                }
    
                // ...
            }
    Se è stato creato il nuovo account, anche l'utente ha effettuato l'accesso. Nella richiamata, è possibile utilizzare il metodo getCurrentUser per ottenere i dati dell'account dell'utente.

Accedi a un utente con un indirizzo email e una password

I passaggi per accedere a un utente con una password sono simili ai passaggi per creare un nuovo account. Nell'attività di accesso della tua app, procedi come segue:

  1. Nel metodo onCreate della onCreate attività di onCreate , ottieni l'istanza condivisa dell'oggetto FirebaseAuth :

    Giava

    private FirebaseAuth mAuth;
    // ...
    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();

    Kotlin + KTX

    private lateinit var auth: FirebaseAuth
    // ...
    // Initialize Firebase Auth
    auth = Firebase.auth
  2. Quando si inizializza la tua attività, controlla se l'utente è attualmente connesso:

    Giava

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

    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)
    }
  3. Quando un utente signInWithEmailAndPassword alla tua app, passa l'indirizzo email e la password dell'utente a signInWithEmailAndPassword :

    Giava

    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);
                        // ...
                    }
    
                    // ...
                }
            });

    Kotlin + KTX

    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)
                    // ...
                }
    
                // ...
            }
    Se l'accesso è riuscito, puoi utilizzare FirebaseUser restituito per procedere.

Prossimi passi

Dopo che un utente accede per la prima volta, viene creato un nuovo account utente e collegato alle credenziali, ovvero il nome utente e la password, il numero di telefono o le informazioni del provider di autenticazione, con cui l'utente ha effettuato l'accesso. Questo nuovo account viene archiviato come parte del progetto Firebase e può essere utilizzato per identificare un utente in ogni app del progetto, indipendentemente da come l'utente effettua l'accesso.

  • Nelle tue app, puoi ottenere le informazioni di base del profilo dell'utente dall'oggetto FirebaseUser . Vedi Gestisci utenti .

  • Nelle regole di sicurezza di Firebase Realtime Database e Cloud Storage, puoi ottenere l'ID utente univoco dell'utente connesso dalla variabile auth e utilizzarlo per controllare i dati a cui un utente può accedere.

Puoi consentire agli utenti di accedere alla tua app utilizzando più provider di autenticazione collegando le credenziali del provider di autenticazione a un account utente esistente.

Per disconnettere un utente, chiama signOut :

Giava

FirebaseAuth.getInstance().signOut();

Kotlin + KTX

Firebase.auth.signOut()