Authentifizieren Sie sich bei Firebase mit passwortbasierten Konten auf Android

Sie können die Firebase-Authentifizierung verwenden, um Ihren Benutzern die Authentifizierung bei Firebase mit ihren E-Mail-Adressen und Passwörtern zu ermöglichen und um die passwortbasierten Konten Ihrer App zu verwalten.

Bevor Sie beginnen

  1. Falls noch nicht geschehen, fügen Sie Firebase zu Ihrem Android-Projekt hinzu .

  2. Wenn Sie Ihre App noch nicht mit Ihrem Firebase-Projekt verbunden haben, tun Sie dies über die Firebase-Konsole .
  3. E-Mail-/Passwort-Anmeldung aktivieren:
    1. Öffnen Sie in der Firebase-Konsole den Abschnitt „Auth“ .
    2. Aktivieren Sie auf der Registerkarte „Anmeldemethode“ die Anmeldemethode „E-Mail/Passwort“ und klicken Sie auf „Speichern“ .
  4. Fügen Sie in Ihrer Modul-Gradle-Datei (auf App-Ebene) (normalerweise <project>/<app-module>/build.gradle.kts oder <project>/<app-module>/build.gradle ) die Abhängigkeit für die Firebase-Authentifizierung hinzu Bibliothek für Android. Wir empfehlen die Verwendung der Firebase Android BoM zur Steuerung der Bibliotheksversionierung.

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

    Durch die Verwendung der Firebase Android BoM verwendet Ihre App immer kompatible Versionen der Firebase Android-Bibliotheken.

    (Alternative) Fügen Sie Firebase-Bibliotheksabhängigkeiten hinzu , ohne die Stückliste zu verwenden

    Wenn Sie die Firebase-Stückliste nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in ihrer Abhängigkeitszeile angeben.

    Beachten Sie: Wenn Sie mehrere Firebase-Bibliotheken in Ihrer App verwenden, empfehlen wir dringend, die BoM zum Verwalten der Bibliotheksversionen zu verwenden, um sicherzustellen, dass alle Versionen kompatibel sind.

    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.1")
    }
    
    Suchen Sie nach einem Kotlin-spezifischen Bibliotheksmodul? Ab Oktober 2023 (Firebase BoM 32.5.0) können sich sowohl Kotlin- als auch Java-Entwickler auf das Hauptbibliotheksmodul verlassen (Einzelheiten finden Sie in den FAQ zu dieser Initiative ).

Erstellen Sie ein passwortbasiertes Konto

Um ein neues Benutzerkonto mit einem Passwort zu erstellen, führen Sie die folgenden Schritte in der Anmeldeaktivität Ihrer App aus:

  1. Rufen Sie in der onCreate Methode Ihrer Anmeldeaktivität die gemeinsame Instanz des FirebaseAuth Objekts ab:

    Kotlin+KTX

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

    Java

    private FirebaseAuth mAuth;
    // ...
    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();
  2. Überprüfen Sie beim Initialisieren Ihrer Aktivität, ob der Benutzer derzeit angemeldet ist:

    Kotlin+KTX

    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();
        }
    }
  3. Wenn sich ein neuer Benutzer über das Anmeldeformular Ihrer App anmeldet, führen Sie alle für Ihre App erforderlichen Validierungsschritte für das neue Konto aus, z. B. die Überprüfung, ob das Kennwort des neuen Kontos korrekt eingegeben wurde und Ihren Komplexitätsanforderungen entspricht.
  4. Erstellen Sie ein neues Konto, indem Sie die E-Mail-Adresse und das Passwort des neuen Benutzers an createUserWithEmailAndPassword übergeben:

    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)
            }
        }

    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);
                    }
                }
            });
    Wenn das neue Konto erstellt wurde, ist der Benutzer auch angemeldet. Im Rückruf können Sie die Methode getCurrentUser verwenden, um die Kontodaten des Benutzers abzurufen.

Melden Sie einen Benutzer mit einer E-Mail-Adresse und einem Passwort an

Die Schritte zum Anmelden eines Benutzers mit einem Passwort ähneln den Schritten zum Erstellen eines neuen Kontos. Gehen Sie in der Anmeldeaktivität Ihrer App wie folgt vor:

  1. Rufen Sie in der onCreate Methode Ihrer Anmeldeaktivität die gemeinsame Instanz des FirebaseAuth Objekts ab:

    Kotlin+KTX

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

    Java

    private FirebaseAuth mAuth;
    // ...
    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();
  2. Überprüfen Sie beim Initialisieren Ihrer Aktivität, ob der Benutzer derzeit angemeldet ist:

    Kotlin+KTX

    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();
        }
    }
  3. Wenn sich ein Benutzer bei Ihrer App anmeldet, übergeben Sie die E-Mail-Adresse und das Passwort des Benutzers an signInWithEmailAndPassword :

    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)
            }
        }

    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);
                    }
                }
            });
    Wenn die Anmeldung erfolgreich war, können Sie mit dem zurückgegebenen FirebaseUser fortfahren.

Empfohlen: Aktivieren Sie den E-Mail-Aufzählungsschutz

Einige Firebase-Authentifizierungsmethoden, die E-Mail-Adressen als Parameter verwenden, lösen bestimmte Fehler aus, wenn die E-Mail-Adresse nicht registriert ist, obwohl sie registriert werden muss (z. B. wenn Sie sich mit einer E-Mail-Adresse und einem Passwort anmelden), oder wenn sie registriert ist, wenn sie nicht verwendet werden muss (z. B. beim Ändern der E-Mail-Adresse eines Benutzers). Dies kann zwar hilfreich sein, um Benutzern spezifische Abhilfemaßnahmen vorzuschlagen, es kann jedoch auch von böswilligen Akteuren missbraucht werden, um die von Ihren Benutzern registrierten E-Mail-Adressen zu ermitteln.

Um dieses Risiko zu mindern, empfehlen wir Ihnen, den E-Mail-Aufzählungsschutz für Ihr Projekt mit dem Google Cloud-Tool gcloud zu aktivieren. Beachten Sie, dass sich durch die Aktivierung dieser Funktion das Fehlerberichtsverhalten von Firebase Authentication ändert: Stellen Sie sicher, dass Ihre App nicht auf spezifischere Fehler angewiesen ist.

Nächste Schritte

Nachdem sich ein Benutzer zum ersten Mal angemeldet hat, wird ein neues Benutzerkonto erstellt und mit den Anmeldeinformationen – also dem Benutzernamen und dem Kennwort, der Telefonnummer oder den Informationen zum Authentifizierungsanbieter – verknüpft, mit denen sich der Benutzer angemeldet hat. Dieses neue Konto wird als Teil Ihres Firebase-Projekts gespeichert und kann zur Identifizierung eines Benutzers in jeder App in Ihrem Projekt verwendet werden, unabhängig davon, wie sich der Benutzer anmeldet.

  • In Ihren Apps können Sie die grundlegenden Profilinformationen des Benutzers aus dem FirebaseUser Objekt abrufen. Siehe Benutzer verwalten .

  • In Ihren Firebase-Echtzeitdatenbank- und Cloud-Speicher- Sicherheitsregeln können Sie die eindeutige Benutzer-ID des angemeldeten Benutzers aus der auth abrufen und damit steuern, auf welche Daten ein Benutzer zugreifen kann.

Sie können Benutzern die Anmeldung bei Ihrer App mit mehreren Authentifizierungsanbietern ermöglichen, indem Sie die Anmeldeinformationen des Authentifizierungsanbieters mit einem vorhandenen Benutzerkonto verknüpfen.

Um einen Benutzer abzumelden, rufen Sie signOut auf:

Kotlin+KTX

Firebase.auth.signOut()

Java

FirebaseAuth.getInstance().signOut();