Verwalten Sie Benutzer in Firebase

Erstellen Sie einen Benutzer

Sie können in Ihrem Firebase-Projekt auf vier Arten einen neuen Benutzer erstellen:

  • Rufen Sie die Methode createUserWithEmailAndPassword() auf.
  • Melden Sie einen Benutzer zum ersten Mal mit einem föderierten Identitätsanbieter an, z. B. Google Sign-In, Facebook Login oder Apple.

Sie können auch neue passwortauthentifizierte Benutzer über den Abschnitt „Authentifizierung“ der Firebase-Konsole auf der Seite „Benutzer“ erstellen.

Rufen Sie das Profil eines Benutzers ab

Um die Profilinformationen eines Benutzers abzurufen, verwenden Sie die Eigenschaften von User . Es gibt drei Möglichkeiten, ein User Objekt abzurufen, das den aktuellen Benutzer darstellt:

  • Die Streams authStateChanges , idTokenChanges und userChanges : Ihre Listener erhalten den aktuellen User oder null , wenn kein Benutzer authentifiziert ist:

    FirebaseAuth.instance
      .authStateChanges()
      .listen((User? user) {
        if (user != null) {
          print(user.uid);
        }
      });
    

    Wenn die App gestartet wird, wird ein Ereignis ausgelöst, nachdem die Benutzeranmeldeinformationen (falls vorhanden) aus dem lokalen Speicher wiederhergestellt wurden. Das bedeutet, dass Ihre Listener immer aufgerufen werden, wenn der Benutzerstatus initialisiert wird. Wenn sich dann der Authentifizierungsstatus ändert, wird ein neues Ereignis mit dem aktualisierten Benutzerstatus ausgelöst.

    Durch Abhören des Authentifizierungsstatus können Sie eine Benutzeroberfläche erstellen, die auf diese Änderungen im Authentifizierungsstatus reagiert.

  • Das von den Authentifizierungsmethoden ( signIn -) zurückgegebene UserCredential Objekt: Das UserCredential Objekt verfügt über eine user mit dem aktuellen User :

    final userCredential =
        await FirebaseAuth.instance.signInWithCredential(credential);
    final user = userCredential.user;
    print(user?.uid);
    
  • Die Eigenschaft currentUser der FirebaseAuth Instanz: Wenn Sie sicher sind, dass der Benutzer derzeit angemeldet ist, können Sie über die Eigenschaft currentUser auf den User zugreifen:

    if (FirebaseAuth.instance.currentUser != null) {
      print(FirebaseAuth.instance.currentUser?.uid);
    }
    

    Der currentUser kann aus zwei Gründen null sein:

    • Der Benutzer ist nicht angemeldet.
    • Die Initialisierung des Authentifizierungsobjekts ist noch nicht abgeschlossen. Wenn Sie einen Listener verwenden, um den Anmeldestatus des Benutzers zu verfolgen, müssen Sie diesen Fall nicht behandeln.

Rufen Sie die anbieterspezifischen Profilinformationen eines Benutzers ab

Um die Profilinformationen abzurufen, die von den mit einem Benutzer verknüpften Anmeldeanbietern abgerufen werden, verwenden Sie die Eigenschaft providerData . Zum Beispiel:

if (user != null) {
    for (final providerProfile in user.providerData) {
        // ID of the provider (google.com, apple.com, etc.)
        final provider = providerProfile.providerId;

        // UID specific to the provider
        final uid = providerProfile.uid;

        // Name, email address, and profile photo URL
        final name = providerProfile.displayName;
        final emailAddress = providerProfile.email;
        final profilePhoto = providerProfile.photoURL;
    }
}

Aktualisieren Sie das Profil eines Benutzers

Sie können die grundlegenden Profilinformationen eines Benutzers – den Anzeigenamen und die Profilfoto-URL des Benutzers – mit den update -Methoden aktualisieren. Zum Beispiel:

await user?.updateDisplayName("Jane Q. User");
await user?.updatePhotoURL("https://example.com/jane-q-user/profile.jpg");

Legen Sie die E-Mail-Adresse eines Benutzers fest

Sie können die E-Mail-Adresse eines Benutzers mit der Methode updateEmail() festlegen. Zum Beispiel:

await user?.updateEmail("janeq@example.com");

Senden Sie einem Benutzer eine Bestätigungs-E-Mail

Mit der Methode sendEmailVerification() können Sie eine E-Mail zur Adressbestätigung an einen Benutzer senden. Zum Beispiel:

await user?.sendEmailVerification();

Sie können die E-Mail-Vorlage, die im Abschnitt „Authentifizierung“ der Firebase-Konsole verwendet wird, auf der Seite „E-Mail-Vorlagen“ anpassen. Siehe E-Mail-Vorlagen im Firebase-Hilfecenter.

Es ist auch möglich, den Status über eine Fortsetzungs-URL zu übergeben, um beim Senden einer Bestätigungs-E-Mail zurück zur App umzuleiten.

Darüber hinaus können Sie die Bestätigungs-E-Mail lokalisieren, indem Sie den Sprachcode auf der Auth-Instanz aktualisieren, bevor Sie die E-Mail senden. Zum Beispiel:

await FirebaseAuth.instance.setLanguageCode("fr");
await user?.sendEmailVerification();

Legen Sie das Passwort eines Benutzers fest

Sie können das Passwort eines Benutzers mit der Methode updatePassword() festlegen. Zum Beispiel:

await user?.updatePassword(newPassword);

Senden Sie eine E-Mail zum Zurücksetzen des Passworts

Mit der Methode sendPasswordResetEmail() können Sie eine E-Mail zum Zurücksetzen des Passworts an einen Benutzer senden. Zum Beispiel:

await FirebaseAuth.instance
    .sendPasswordResetEmail(email: "user@example.com");

Sie können die E-Mail-Vorlage, die im Abschnitt „Authentifizierung“ der Firebase-Konsole verwendet wird, auf der Seite „E-Mail-Vorlagen“ anpassen. Siehe E-Mail-Vorlagen im Firebase-Hilfecenter.

Es ist auch möglich, den Status über eine Fortsetzungs-URL zu übergeben, um beim Senden einer E-Mail zum Zurücksetzen des Passworts zurück zur App umzuleiten.

Darüber hinaus können Sie die E-Mail zum Zurücksetzen des Passworts lokalisieren, indem Sie den Sprachcode auf der Auth-Instanz aktualisieren, bevor Sie die E-Mail senden. Zum Beispiel:

await FirebaseAuth.instance.setLanguageCode("fr");

Sie können E-Mails zum Zurücksetzen des Passworts auch über die Firebase-Konsole senden.

Einen Benutzer löschen

Sie können ein Benutzerkonto mit der Methode delete() löschen. Zum Beispiel:

await user?.delete();

Sie können Benutzer auch im Abschnitt „Authentifizierung“ der Firebase-Konsole auf der Seite „Benutzer“ löschen.

Authentifizieren Sie einen Benutzer erneut

Einige sicherheitsrelevante Aktionen – wie das Löschen eines Kontos , das Festlegen einer primären E-Mail-Adresse und das Ändern eines Passworts – erfordern, dass sich der Benutzer kürzlich angemeldet hat. Wenn Sie eine dieser Aktionen ausführen und der Benutzer sich vor zu langer Zeit angemeldet hat, wird die Die Aktion schlägt fehl und löst eine FirebaseAuthException mit dem Code requires-recent-login aus. Wenn dies geschieht, authentifizieren Sie den Benutzer erneut, indem Sie neue Anmeldeinformationen vom Benutzer erhalten und diese an reauthenticate übergeben. Zum Beispiel:

// Prompt the user to re-provide their sign-in credentials.
// Then, use the credentials to reauthenticate:
await user?.reauthenticateWithCredential(credential);

Benutzerkonten importieren

Sie können Benutzerkonten aus einer Datei in Ihr Firebase-Projekt importieren, indem Sie den Befehl auth:import der Firebase-CLI verwenden. Zum Beispiel:

firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14