Anonym mit Firebase auf Android authentifizieren

Mit Firebase Authentication können Sie temporäre anonyme Konten erstellen und verwenden, um sich bei Firebase zu authentifizieren. Diese temporären anonymen Konten können verwendet werden, um Nutzern, die sich noch nicht in Ihrer App registriert haben, die Arbeit mit Daten zu ermöglichen, die durch Sicherheitsregeln geschützt sind. Wenn sich ein anonymer Nutzer in Ihrer App registriert, können Sie seine Anmeldedaten mit dem anonymen Konto verknüpfen, damit er in zukünftigen Sitzungen weiterhin mit seinen geschützten Daten arbeiten kann.

Hinweis

  1. Falls noch nicht geschehen, fügen Sie Ihrem Android-Projekt Firebase hinzu.
  2. Fügen Sie in der Gradle-Datei Ihres Moduls (auf Anwendungsebene) (in der Regel <project>/<app-module>/build.gradle.kts oder <project>/<app-module>/build.gradle) die Abhängigkeit für die Firebase Authentication Bibliothek für Android hinzu. Wir empfehlen, die Firebase Android BoM zu verwenden, um die Bibliotheksversionierung zu steuern.
    dependencies {
        // Import the BoM for the Firebase platform
        implementation(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 dependencies
        implementation("com.google.firebase:firebase-auth")
    }

    Mit der Firebase Android BoM, haben Sie immer eine kompatible Version der Firebase Android-Bibliotheken in Ihrer App.

    (Alternative)   Firebase-Bibliotheksabhängigkeiten ohne Verwendung der BoM

    Wenn Sie die Firebase BoM nicht verwenden möchten, müssen Sie die Version jeder Firebase-Bibliothek in der entsprechenden Abhängigkeitszeile angeben.

    Wenn Sie in Ihrer App mehrere Firebase-Bibliotheken verwenden, empfehlen wir dringend, die BoM zur Verwaltung 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:24.0.1")
    }
  3. Wenn Sie Ihre App noch nicht mit Ihrem Firebase-Projekt verknüpft haben, tun Sie dies in der Firebase Konsole.
  4. Anonyme Authentifizierung aktivieren:
    1. Öffnen Sie in der Firebase Konsole den Bereich Auth.
    2. Aktivieren Sie auf der Seite Anmeldemethoden die Anmeldemethode Anonym.
    3. Optional: Wenn Sie Ihr Projekt auf Firebase Authentication with Identity Platform aktualisiert haben, können Sie die automatische Bereinigung aktivieren. Wenn Sie diese Einstellung aktivieren, werden anonyme Konten, die älter als 30 Tage sind, automatisch gelöscht. In Projekten, in denen die automatische Bereinigung aktiviert ist, wird die anonyme Authentifizierung nicht mehr auf die Nutzungslimits oder Abrechnungskontingente angerechnet. Weitere Informationen finden Sie unter Automatische Bereinigung.

Anonyme Authentifizierung mit Firebase

Wenn ein abgemeldeter Nutzer eine App-Funktion verwendet, für die eine Authentifizierung mit Firebase erforderlich ist, melden Sie den Nutzer anonym an. Führen Sie dazu die folgenden Schritte aus:

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

    Kotlin

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

    Java

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

    Kotlin

    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

    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        updateUI(currentUser);
    }
  3. Rufen Sie schließlich signInAnonymously auf, um sich als anonymer Nutzer anzumelden:

    Kotlin

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

    Java

    mAuth.signInAnonymously()
            .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, "signInAnonymously:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                        updateUI(user);
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInAnonymously:failure", task.getException());
                        Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
                }
            });
    Wenn die Anmeldung erfolgreich ist, können Sie mit der Methode getCurrentUser die Kontodaten des Nutzers abrufen.

Anonymes Konto in ein dauerhaftes Konto umwandeln

Wenn sich ein anonymer Nutzer in Ihrer App registriert, möchten Sie ihm möglicherweise erlauben, mit seinem neuen Konto weiterzuarbeiten. So können Sie beispielsweise die Artikel, die der Nutzer vor der Registrierung in seinen Einkaufswagen gelegt hat, im Einkaufswagen seines neuen Kontos verfügbar machen. Führen Sie dazu folgende Schritte aus:

  1. Wenn sich der Nutzer registriert, führen Sie den Anmeldevorgang für den Authentifizierungsanbieter des Nutzers bis zum Aufruf einer der FirebaseAuth.signInWith Methoden durch. Rufen Sie beispielsweise das Google-ID-Token des Nutzers, das Facebook-Zugriffstoken oder die E‑Mail-Adresse und das Passwort ab.
  2. Rufen Sie ein AuthCredential für den neuen Authentifizierungsanbieter ab:

    Google Log-in

    Kotlin

    val credential = GoogleAuthProvider.getCredential(googleIdToken, null)

    Java

    AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
    Facebook-Login

    Kotlin

    val credential = FacebookAuthProvider.getCredential(token.token)

    Java

    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    Anmeldung mit E‑Mail-Adresse und Passwort

    Kotlin

    val credential = EmailAuthProvider.getCredential(email, password)

    Java

    AuthCredential credential = EmailAuthProvider.getCredential(email, password);
  3. Übergeben Sie das AuthCredential Objekt an die Methode linkWithCredential des angemeldeten Nutzers:

    Kotlin

    auth.currentUser!!.linkWithCredential(credential)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                Log.d(TAG, "linkWithCredential:success")
                val user = task.result?.user
                updateUI(user)
            } else {
                Log.w(TAG, "linkWithCredential:failure", task.exception)
                Toast.makeText(
                    baseContext,
                    "Authentication failed.",
                    Toast.LENGTH_SHORT,
                ).show()
                updateUI(null)
            }
        }

    Java

    mAuth.getCurrentUser().linkWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        Log.d(TAG, "linkWithCredential:success");
                        FirebaseUser user = task.getResult().getUser();
                        updateUI(user);
                    } else {
                        Log.w(TAG, "linkWithCredential:failure", task.getException());
                        Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
                }
            });

Wenn der Aufruf von linkWithCredential erfolgreich ist, kann das neue Konto des Nutzers auf die Firebase-Daten des anonymen Kontos zugreifen.

Automatische Bereinigung

Wenn Sie Ihr Projekt auf Firebase Authentication with Identity Platform aktualisiert haben, können Sie die automatische Bereinigung in der Firebase Console aktivieren. Wenn Sie diese Funktion aktivieren, kann Firebase anonyme Konten, die älter als 30 Tage sind, automatisch löschen. In Projekten, in denen die automatische Bereinigung aktiviert ist, wird die anonyme Authentifizierung nicht auf die Nutzungslimits oder Abrechnungskontingente angerechnet.

  • Alle anonymen Konten, die nach dem Aktivieren der automatischen Bereinigung erstellt wurden, können jederzeit nach 30 Tagen nach der Erstellung automatisch gelöscht werden.
  • Vorhandene anonyme Konten können 30 Tage nach dem Aktivieren der automatischen Bereinigung automatisch gelöscht werden.
  • Wenn Sie die automatische Bereinigung deaktivieren, bleiben alle anonymen Konten, die zum Löschen geplant sind, weiterhin zum Löschen geplant.
  • Wenn Sie ein anonymes Konto "aktualisieren", indem Sie es mit einer Anmeldemethode verknüpfen, wird das Konto nicht automatisch gelöscht.

Wenn Sie sehen möchten, wie viele Nutzer betroffen sind, bevor Sie diese Funktion aktivieren, und Sie Ihr Projekt auf Firebase Authentication with Identity Platform aktualisiert haben, können Sie in Cloud Logging nach is_anon filtern.

Nächste Schritte

Nachdem sich Nutzer mit Firebase authentifizieren können, können Sie ihren Zugriff auf Daten in Ihrer Firebase-Datenbank mit Firebase-Regeln steuern.