Anonyme Authentifizierung bei Firebase

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 durch Sicherheitsregeln geschützten Daten arbeiten. Wenn sich ein anonymer Nutzer für Ihre App registriert, können Sie ihre Anmeldedaten mit dem anonymen Konto zu verknüpfen, damit sie auch in Zukunft weiterhin mit ihren geschützten Daten arbeiten können.

Hinweis

  1. Folgen Sie gegebenenfalls der Anleitung im Startleitfaden.

  2. Anonyme Anmeldung aktivieren:

    • Öffnen Sie in der Firebase Console im Bereich Authentifizierung die Seite Anmeldemethode.
    • Aktivieren Sie auf der Seite Anmeldemethode die Option Anonyme Anmeldung. und klicken Sie auf Speichern.

Anonym bei Firebase authentifizieren

Wenn ein abgemeldeter Nutzer eine App-Funktion verwendet, für die eine Authentifizierung mit Firebase: Melden Sie den Nutzer anonym an, indem Sie signInAnonymously() aufrufen:

try {
  final userCredential =
      await FirebaseAuth.instance.signInAnonymously();
  print("Signed in with temporary account.");
} on FirebaseAuthException catch (e) {
  switch (e.code) {
    case "operation-not-allowed":
      print("Anonymous auth hasn't been enabled for this project.");
      break;
    default:
      print("Unknown error.");
  }
}

Umwandlung eines anonymen Kontos in ein dauerhaftes Konto

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 Artikel, die Nutzende 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, führe den Anmeldevorgang für den Authentifizierungsanbieter des Nutzers bis zum Aufruf einer der signInWith-Methoden durch, aber nicht bis dahin. Rufen Sie beispielsweise das Google-ID-Token des Nutzers ab, Facebook-Zugriffstoken oder E-Mail-Adresse und Passwort.

  2. Rufen Sie ein Credential-Objekt für den neuen Authentifizierungsanbieter ab:

    // Google Sign-in
    final credential = GoogleAuthProvider.credential(idToken: idToken);
    
    // Email and password sign-in
    final credential =
        EmailAuthProvider.credential(email: emailAddress, password: password);
    
    // Etc.
    
  3. Übergib das Credential-Objekt an das linkWithCredential() des angemeldeten Nutzers :

    try {
      final userCredential = await FirebaseAuth.instance.currentUser
          ?.linkWithCredential(credential);
    } on FirebaseAuthException catch (e) {
      switch (e.code) {
        case "provider-already-linked":
          print("The provider has already been linked to the user.");
          break;
        case "invalid-credential":
          print("The provider's credential is not valid.");
          break;
        case "credential-already-in-use":
          print("The account corresponding to the credential already exists, "
              "or is already linked to a Firebase User.");
          break;
        // See the API reference for the full list of error codes.
        default:
          print("Unknown error.");
      }
      ```
    

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

Nächste Schritte

Nachdem ein Nutzer ein neues Konto erstellt hat, wird dieses Konto als Teil Ihres Firebase-Projekts gespeichert und kann verwendet werden, um einen Nutzer in allen Apps in Ihrem Projekt zu identifizieren, unabhängig davon, welche Anmeldemethode der Nutzer verwendet hat.

In Ihren Apps können Sie die grundlegenden Profilinformationen des Nutzers aus dem User-Objekt abrufen. Weitere Informationen finden Sie unter Nutzer verwalten.

In Ihren Firebase Realtime Database- und Cloud Storage-Sicherheitsregeln können Sie die eindeutige Nutzer-ID des angemeldeten Nutzers aus der Variablen auth abrufen und damit steuern, auf welche Daten ein Nutzer zugreifen kann.

Sie können Nutzern erlauben, sich mit Mehrfachauthentifizierung in Ihrer App anzumelden durch Verknüpfen der Anmeldedaten des Authentifizierungsanbieters mit einem eines bestehenden Nutzerkontos.

Um einen Nutzer abzumelden, rufen Sie signOut() auf:

await FirebaseAuth.instance.signOut();