Anonyme Authentifizierung bei Firebase

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 für Ihre App registriert haben, die Arbeit mit Daten zu ermöglichen, die durch Sicherheitsregeln geschützt sind. Wenn sich ein anonymer Nutzer für Ihre App registriert, können Sie seine Anmeldedaten mit dem anonymen Konto verknüpfen, damit er auch in zukünftigen Sitzungen mit seinen geschützten Daten arbeiten kann.

Hinweis

  1. Falls noch nicht geschehen, folgen Sie der Anleitung unter Erste Schritte.

  2. Anonyme Anmeldung aktivieren:

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

Anonym mit Firebase authentifizieren

Wenn ein abgemeldeter Nutzer eine App-Funktion verwendet, die eine Authentifizierung mit Firebase erfordert, 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.");
  }
}

Anonymes Konto in ein dauerhaftes Konto umwandeln

Wenn sich ein anonymer Nutzer in Ihrer App registriert, möchten Sie ihm möglicherweise erlauben, seine Arbeit mit seinem neuen Konto fortzusetzen. So könnten Sie beispielsweise die Artikel, die der Nutzer vor der Registrierung in den 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 Aufrufen einer der signInWith-Methoden durch, aber rufen Sie keine dieser Methoden auf. Rufen Sie beispielsweise das Google-ID-Token, das Facebook-Zugriffstoken oder die E‑Mail-Adresse und das Passwort des Nutzers ab.

  2. Credential-Objekt für den neuen Authentifizierungsanbieter abrufen:

    // Google Sign-in
    final credential = GoogleAuthProvider.credential(idToken: idToken);
    
    // Email and password sign-in
    final credential =
        EmailAuthProvider.credential(email: emailAddress, password: password);
    
    // Etc.
    
  3. Übergeben Sie das Credential-Objekt an die Methode 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 über das neue Konto des Nutzers auf die Firebase-Daten des anonymen Kontos zugegriffen werden.

Nächste Schritte

Wenn ein Nutzer ein neues Konto erstellt, wird dieses Konto in Ihrem Firebase-Projekt gespeichert. Es 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 mehreren Authentifizierungsanbietern in Ihrer App anzumelden, indem Sie Anmeldedaten des Authentifizierungsanbieters mit einem vorhandenen Nutzerkonto verknüpfen.

Rufen Sie signOut() auf, um einen Nutzer abzumelden:

await FirebaseAuth.instance.signOut();