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. Mit diesen temporären anonymen Konten können Nutzer, die sich noch nicht in Ihrer App registriert haben, mit Daten arbeiten, 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. Fügen Sie Ihrem Android-Projekt Firebase hinzu, falls noch nicht geschehen.
  2. In der Gradle-Datei des Moduls (auf App-Ebene) (normalerweise <project>/<app-module>/build.gradle.kts oder <project>/<app-module>/build.gradle) Fügen Sie die Abhängigkeit für die Firebase Authentication-Bibliothek für Android hinzu. Wir empfehlen, die Firebase Android BoM-Taste zu verwenden, um die Versionierung der Bibliothek zu steuern.
    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.2.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 dem Firebase Android BoM Ihre App verwendet immer kompatible Versionen der Firebase Android Libraries.

    Alternative: Firebase-Bibliotheksabhängigkeiten ohne BoM hinzufügen

    Wenn Sie Firebase BoM nicht verwenden, müssen Sie jede Firebase-Bibliotheksversion in der entsprechenden Abhängigkeitszeile angeben.

    Wenn Sie in Ihrer App mehrere Firebase-Bibliotheken verwenden, empfehlen, Bibliotheksversionen mit der BoM zu verwalten. Dadurch wird sichergestellt, dass alle Versionen kompatibel.

    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:23.0.0")
    }
    Suchen Sie nach einem Kotlin-spezifischen Bibliotheksmodul? Ab Oktober 2023 (Firebase BoM 32.5.0) können sowohl Kotlin- als auch Java-Entwickler das Hauptbibliotheksmodul verwenden. Weitere Informationen finden Sie in den häufig gestellten Fragen zu dieser Initiative.
  3. Wenn Sie Ihre App noch nicht mit Ihrem Firebase-Projekt verbunden haben, tun Sie dies über Firebase-Konsole
  4. Aktivieren Sie die anonyme Authentifizierung:
    1. Öffnen Sie in der Firebase-Konsole den Abschnitt Auth.
    2. Aktivieren Sie auf der Seite Anmeldemethoden die Option Anonym Anmeldemethode aus.
    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 mit aktivierter automatischer Bereinigung wird die anonyme Authentifizierung nicht nicht länger auf Nutzungslimits oder Abrechnungskontingente angerechnet werden. Weitere Informationen finden Sie unter Automatische Bereinigung:

Anonym mit Firebase authentifizieren

Wenn ein abgemeldeter Nutzer eine App-Funktion verwendet, für die eine Authentifizierung mit Firebase: So melden Sie den Nutzer anonym an:

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

    Kotlin+KTX

    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+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

    @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 abschließend signInAnonymously auf, um sich als anonym anzumelden Nutzer:

    Kotlin+KTX

    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 die Kontodaten des Nutzers mit der Methode getCurrentUser abrufen.

Anonymes Konto in ein dauerhaftes Konto umwandeln

Wenn sich ein anonymer Nutzer bei Ihrer App registriert, sollten Sie ihm erlauben, seine Arbeit mit dem neuen Konto fortsetzen. Beispiel: Sie möchten möglicherweise eine die Artikel, die die Nutzenden vor der Registrierung in den Einkaufswagen gelegt haben. im Einkaufswagen ihres neuen Kontos verfügbar sind. Führen Sie dazu folgende Schritte aus:

  1. Wenn sich der Nutzer registriert, schließen Sie den Anmeldevorgang für das Authentifizierungsanbieter bis zum Aufrufen einer der FirebaseAuth.signInWith-Methoden. Rufen Sie beispielsweise das Google-ID-Token des Nutzers ab, Facebook-Zugriffstoken oder E-Mail-Adresse und Passwort.
  2. Rufen Sie eine AuthCredential für den neuen Authentifizierungsanbieter ab:

    Google Log-in

    Kotlin+KTX

    val credential = GoogleAuthProvider.getCredential(googleIdToken, null)

    Java

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

    Kotlin+KTX

    val credential = FacebookAuthProvider.getCredential(token.token)

    Java

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

    Kotlin+KTX

    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+KTX

    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 war, kann das neue Konto des Nutzers auf die Firebase-Daten des anonymen Kontos zugreifen.

Automatische Bereinigung

Wenn Sie für Ihr Projekt ein Upgrade auf Firebase Authentication with Identity Platform durchgeführt haben, können Sie Aktivieren Sie die automatische Bereinigung in der Firebase-Konsole. Wenn Sie diese Funktion aktivieren, mit Firebase, um automatisch anonyme Konten zu löschen, die älter als 30 Tage sind. In Projekten mit automatischem Clean-up aktiviert ist, wird die anonyme Authentifizierung nicht auf Nutzungslimits oder Abrechnungskontingente angerechnet.

  • Alle anonymen Konten, die nach der Aktivierung der automatischen Bereinigung erstellt wurden, können nach 30 Tagen nach der Erstellung jederzeit automatisch gelöscht werden.
  • Bestehende anonyme Konten können nach 30 Tagen automatisch gelöscht werden. automatische Bereinigung aktivieren.
  • 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 „upgraden“, indem Sie es mit einer Anmeldemethode verknüpfen, wird es nicht automatisch gelöscht.

Wenn Sie wissen möchten, wie viele Nutzer betroffen sind, Ihr Projekt auf Firebase Authentication with Identity Platform aktualisiert haben, können Sie filtern nach is_anon in Cloud Logging:

Nächste Schritte

Da sich Nutzer jetzt bei Firebase authentifizieren können, können Sie ihren Zugriff auf in Ihrer Firebase-Datenbank Firebase-Regeln