Anonym bei Firebase 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, so dass er in zukünftigen Sitzungen weiterhin mit seinen geschützten Daten arbeiten kann.

Hinweis

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

  2. Aktivieren Sie die anonyme Anmeldung:

    1. Wechseln Sie in der Firebase Konsole zu Sicherheit > Authentifizierung.

    2. Aktivieren Sie auf dem Tab Anmeldemethode den Anmeldeanbieter Anonym.

    3. 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, mit seinem neuen Konto weiterzuarbeiten. Sie können 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 signInWith-Methoden durch. Rufen Sie beispielsweise das Google-ID-Token, das Facebook-Zugriffstoken oder die E-Mail-Adresse und das Passwort des Nutzers ab.

  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. Übergeben Sie das Credential-Objekt an die linkWithCredential() -Methode 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 Ihres Projekts 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 den Sicherheitsregeln für die Firebase Realtime Database und Cloud Storage 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 Authentifizierungs anbietern 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();