Google is committed to advancing racial equity for Black communities. See how.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Authentifizieren Sie sich anonym mit Firebase auf Android

Mit der Firebase-Authentifizierung können Sie temporäre anonyme Konten erstellen und verwenden, um sich bei Firebase zu authentifizieren. Mit diesen temporären anonymen Konten können Benutzer, die sich noch nicht bei Ihrer App angemeldet haben, mit Daten arbeiten, die durch Sicherheitsregeln geschützt sind. Wenn sich ein anonymer Benutzer für die Anmeldung bei Ihrer App entscheidet, können Sie seine Anmeldeinformationen mit dem anonymen Konto verknüpfen, damit er in zukünftigen Sitzungen weiterhin mit seinen geschützten Daten arbeiten kann.

Bevor Sie beginnen

  1. Wenn Sie dies noch nicht getan haben, fügen Sie Firebase zu Ihrem Android-Projekt hinzu .
  2. build.gradle in Ihrer build.gradle Datei auf Projektebene sicher, dass das Maven-Repository von Google sowohl in Ihrem buildscript als auch in Ihrem allprojects Abschnitt enthalten ist.
  3. Fügen Sie die Abhängigkeit für die Firebase-Authentifizierungs-Android-Bibliothek zu Ihrer Gradle-Datei (normalerweise app/build.gradle ) Ihres Moduls (App-Ebene) app/build.gradle :
    implementation 'com.google.firebase:firebase-auth:19.3.2'
  4. Wenn Sie Ihre App noch nicht mit Ihrem Firebase-Projekt verbunden haben, tun Sie dies über die Firebase-Konsole .
  5. Anonyme Authentifizierung aktivieren:
    1. Öffnen Sie in der Firebase-Konsole den Abschnitt Auth .
    2. Auf der Sign-in Methods Seite, aktivieren Sie die Anonymous-Anmeldung Methode.

Authentifizieren Sie sich anonym bei Firebase

Wenn ein abgemeldeter Benutzer eine App-Funktion verwendet, für die eine Authentifizierung bei Firebase erforderlich ist, melden Sie sich anonym beim Benutzer an, indem Sie die folgenden Schritte ausführen:

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

    Java

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

    Kotlin + KTX

    private lateinit var auth: FirebaseAuth
    // ...
    // Initialize Firebase Auth
    auth = Firebase.auth
  2. Überprüfen Sie beim Initialisieren Ihrer Aktivität, ob der Benutzer derzeit angemeldet ist:

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

    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. Rufen Sie signInAnonymously auf, um sich als anonymer Benutzer signInAnonymously :

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

    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)
                }
    
                // ...
            }
    Wenn die Anmeldung erfolgreich ist, können Sie die getCurrentUser Methode verwenden, um die Kontodaten des Benutzers getCurrentUser .

Konvertieren Sie ein anonymes Konto in ein permanentes Konto

Wenn sich ein anonymer Benutzer bei Ihrer App anmeldet, möchten Sie ihm möglicherweise erlauben, seine Arbeit mit seinem neuen Konto fortzusetzen. Beispielsweise möchten Sie möglicherweise die Artikel, die der Benutzer seinem Warenkorb hinzugefügt hat, bevor er sich in seinem neuen Konto anmeldet, verfügbar machen Warenkorb des Kontos. Führen Sie dazu die folgenden Schritte aus:

  1. Wenn sich der Benutzer anmeldet, schließen Sie den Anmeldefluss für den Authentifizierungsanbieter des Benutzers ab, bis Sie eine der FirebaseAuth.signInWith Methoden aufrufen, jedoch nicht einschließen. Erhalten Sie beispielsweise das Google ID-Token des Benutzers, das Facebook-Zugriffstoken oder die E-Mail-Adresse und das Kennwort.
  2. Holen Sie sich ein AuthCredential für den neuen Authentifizierungsanbieter:

    Google-Anmeldung

    Java

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

    Kotlin + KTX

    val credential = GoogleAuthProvider.getCredential(googleIdToken, null)
    Facebook Login

    Java

    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());

    Kotlin + KTX

    val credential = FacebookAuthProvider.getCredential(token.token)
    Anmeldung per E-Mail-Passwort

    Java

    AuthCredential credential = EmailAuthProvider.getCredential(email, password);

    Kotlin + KTX

    val credential = EmailAuthProvider.getCredential(email, password)
  3. AuthCredential das AuthCredential Objekt an die linkWithCredential Methode des linkWithCredential Benutzers:

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

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

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

Nächste Schritte

Nachdem sich Benutzer bei Firebase authentifizieren können, können Sie ihren Zugriff auf Daten in Ihrer Firebase-Datenbank mithilfe von Firebase-Regeln steuern.