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
unduserChanges
: Ihre Listener erhalten den aktuellenUser
odernull
, 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ückgegebeneUserCredential
Objekt: DasUserCredential
Objekt verfügt über eineuser
mit dem aktuellenUser
:final userCredential = await FirebaseAuth.instance.signInWithCredential(credential); final user = userCredential.user; print(user?.uid);
Die Eigenschaft
currentUser
derFirebaseAuth
Instanz: Wenn Sie sicher sind, dass der Benutzer derzeit angemeldet ist, können Sie über die EigenschaftcurrentUser
auf denUser
zugreifen:if (FirebaseAuth.instance.currentUser != null) { print(FirebaseAuth.instance.currentUser?.uid); }
Der
currentUser
kann aus zwei Gründennull
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