查看 2022 年 Google I/O 大会上介绍的 Firebase 新动态。了解详情

Authentifizieren Sie sich anonym bei Firebase

Sie können die Firebase-Authentifizierung verwenden, um temporäre anonyme Konten zu erstellen und zu verwenden, um sich bei Firebase zu authentifizieren. Diese temporären anonymen Konten können verwendet werden, um Benutzern, die sich noch nicht bei Ihrer App angemeldet haben, zu ermöglichen, mit Daten zu arbeiten, die durch Sicherheitsregeln geschützt sind. Wenn ein anonymer Benutzer beschließt, sich bei Ihrer App anzumelden, 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, folgen Sie den Schritten im Handbuch „Erste Schritte“.

  2. Anonyme Anmeldung aktivieren:

    • Öffnen Sie im Abschnitt Authentifizierung der Firebase-Konsole die Seite Anmeldemethode .
    • Aktivieren Sie auf der Seite Anmeldemethode die anonyme Anmeldemethode und klicken Sie auf Speichern .

Authentifizieren Sie sich anonym bei Firebase

Wenn ein abgemeldeter Benutzer eine App-Funktion verwendet, die eine Authentifizierung bei Firebase erfordert, melden Sie den Benutzer anonym an, indem 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.");
  }
}

Wandeln Sie ein anonymes Konto in ein permanentes Konto um

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

  1. Wenn sich der Benutzer anmeldet, führen Sie den Anmeldeablauf für den Authentifizierungsanbieter des Benutzers bis zum Aufrufen einer der signInWith Methoden (aber nicht einschließlich) durch. Rufen Sie beispielsweise das Google-ID-Token, das Facebook-Zugriffstoken oder die E-Mail-Adresse und das Passwort des Benutzers 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 Methode linkWithCredential() des Anmeldebenutzers:

    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 Benutzers auf die Firebase-Daten des anonymen Kontos zugreifen.

Nächste Schritte

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

In Ihren Apps können Sie die grundlegenden Profilinformationen des Benutzers aus dem User abrufen. Siehe Benutzer verwalten .

In Ihren Firebase-Echtzeitdatenbank- und Cloudspeicher-Sicherheitsregeln können Sie die eindeutige Benutzer-ID des angemeldeten Benutzers aus der auth -Variable abrufen und damit steuern, auf welche Daten ein Benutzer zugreifen kann.

Sie können Benutzern erlauben, sich mit mehreren Authentifizierungsanbietern bei Ihrer App anzumelden, indem Sie die Anmeldeinformationen des Authentifizierungsanbieters ) mit einem vorhandenen Benutzerkonto verknüpfen .

Um einen Benutzer abzumelden, rufen signOut() :

await FirebaseAuth.instance.signOut();