Nutzer erstellen
Sie haben folgende Möglichkeiten, einen neuen Nutzer zu erstellen:
Über Ihre App: Erstellen Sie einen neuen Nutzer in Ihrem Firebase-Projekt, indem Sie die
createUserWithEmailAndPassword()Methode aufrufen oder sich ein Nutzer zum ersten Mal mit einem föderierten Identitätsanbieter, wie Google-Anmeldung, Facebook-Anmeldung oder Apple anmeldet.In der Firebase Konsole: Erstellen Sie einen neuen Nutzer mit Passwortauthentifizierung auf dem Tab Sicherheit > Authentifizierung > Nutzer.
Nutzerprofil abrufen
Verwenden Sie die Eigenschaften von User, um die Profilinformationen eines Nutzers abzurufen. Es gibt drei Möglichkeiten, ein User-Objekt abzurufen, das den aktuellen Nutzer darstellt:
Die Streams
authStateChanges,idTokenChangesunduserChanges: Ihre Listener erhalten den aktuellenUserodernull, wenn kein Nutzer authentifiziert ist:FirebaseAuth.instance .authStateChanges() .listen((User? user) { if (user != null) { print(user.uid); } });Beim Starten der App wird ein Ereignis ausgelöst, nachdem die Anmeldedaten des Nutzers (falls vorhanden) aus dem lokalen Speicher wiederhergestellt wurden. Das bedeutet, dass Ihre Listener immer aufgerufen werden, wenn der Nutzerstatus initialisiert wird. Wenn sich der Authentifizierungsstatus ändert, wird ein neues Ereignis mit dem aktualisierten Nutzerstatus ausgelöst.
Wenn Sie den Authentifizierungsstatus beobachten, können Sie eine Benutzeroberfläche erstellen, die auf diese Änderungen des Authentifizierungsstatus reagiert. Platzieren Sie
authStateChanges().listen(...)nicht direkt in der Build-Methode eines Widgets, da bei jedem Neuaufbau ein neues Abo erstellt wird. Wenn Sie die Benutzeroberfläche als Reaktion auf den Authentifizierungsstatus aktualisieren müssen, verwenden SieStreamBuilder:StreamBuilder<User?>( stream: FirebaseAuth.instance.authStateChanges(), builder: (BuildContext context, AsyncSnapshot<User?> snapshot) { if (snapshot.hasError) { return const Text('Something went wrong'); } if (snapshot.connectionState == ConnectionState.waiting) { return const Text("Loading..."); } if (!snapshot.hasData) { return const SignInScreen(); } final user = snapshot.data!; return HomeScreen(userId: user.uid); }, )So wird der Widget-Baum automatisch neu aufgebaut, wenn sich der Authentifizierungsstatus des Nutzers ändert.
Das
UserCredential-Objekt, das von den Authentifizierungsmethoden (signIn-) zurückgegeben wird: DasUserCredential-Objekt hat eineuser-Eigenschaft mit dem aktuellenUser:final userCredential = await FirebaseAuth.instance.signInWithCredential(credential); final user = userCredential.user; print(user?.uid);Die
currentUser-Eigenschaft derFirebaseAuth-Instanz: Wenn Sie sicher sind, dass der Nutzer derzeit angemeldet ist, können Sie über diecurrentUser-Eigenschaft aufUserzugreifen:if (FirebaseAuth.instance.currentUser != null) { print(FirebaseAuth.instance.currentUser?.uid); }currentUserkann aus zwei Gründennullsein:- Der Nutzer ist nicht angemeldet.
- Die Initialisierung des Authentifizierungsobjekts ist noch nicht abgeschlossen. Wenn Sie einen Listener verwenden, um den Anmeldestatus des Nutzers zu verfolgen, müssen Sie diesen Fall nicht behandeln.
Anbieterspezifische Profilinformationen eines Nutzers abrufen
Verwenden Sie die Eigenschaft providerData, um die Profilinformationen abzurufen, die von den mit einem Nutzer verknüpften Anmeldeanbietern abgerufen wurden. 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;
}
}
Nutzerprofil aktualisieren
Mit den Methoden update können Sie die grundlegenden Profilinformationen eines Nutzers aktualisieren, z. B. den Anzeigenamen
und die URL des Profilfotos. Beispiel:
await user?.updateDisplayName("Jane Q. User");
await user?.updatePhotoURL("https://example.com/jane-q-user/profile.jpg");
E-Mail-Adresse eines Nutzers festlegen
Sie können die E-Mail-Adresse eines Nutzers mit der Methode updateEmail() festlegen. Beispiel:
await user?.updateEmail("janeq@example.com");
Bestätigungs-E-Mail an einen Nutzer senden
Mit der Methode sendEmailVerification() können Sie eine E-Mail zur Bestätigung der Adresse an einen Nutzer senden. Beispiel:
await user?.sendEmailVerification();
Sie können auf dem Tab Vorlagen der Firebase Konsole anpassen, welche E-Mail-Vorlage verwendet wird. Weitere Informationen finden Sie im Hilfeartikel E-Mail-Vorlagen in Firebase-Hilfecenter.
Außerdem können Sie über eine Weiterleitungs-URL einen Status übergeben, um nach dem Senden einer Bestätigungs-E-Mail wieder zur App weiterzuleiten.
Darüber hinaus können Sie die Bestätigungs-E-Mail lokalisieren, indem Sie den Sprachcode in der Auth-Instanz aktualisieren, bevor Sie die E-Mail senden. Beispiel:
await FirebaseAuth.instance.setLanguageCode("fr");
await user?.sendEmailVerification();
Passwort eines Nutzers festlegen
Sie können das Passwort eines Nutzers mit der Methode updatePassword() festlegen. Beispiel:
await user?.updatePassword(newPassword);
E-Mail zum Zurücksetzen des Passworts senden
Mit der Methode sendPasswordResetEmail() können Sie eine E-Mail zum Zurücksetzen des Passworts an einen Nutzer senden. Beispiel:
await FirebaseAuth.instance
.sendPasswordResetEmail(email: "user@example.com");
Sie können auf dem Tab Vorlagen der Firebase Konsole anpassen, welche E-Mail-Vorlage verwendet wird. Weitere Informationen finden Sie im Hilfeartikel E-Mail-Vorlagen in Firebase-Hilfecenter.
Außerdem können Sie über eine Weiterleitungs-URL einen Status übergeben, um nach dem Senden einer E-Mail zum Zurücksetzen des Passworts wieder zur App weiterzuleiten.
Darüber hinaus können Sie die E-Mail zum Zurücksetzen des Passworts lokalisieren, indem Sie den Sprachcode in der Auth-Instanz aktualisieren, bevor Sie die E-Mail senden. Beispiel:
await FirebaseAuth.instance.setLanguageCode("fr");
Sie können E-Mails zum Zurücksetzen des Passworts auch über die Firebase Konsole senden.
Nutzer löschen
Mit der Methode delete() können Sie ein Nutzerkonto löschen. Beispiel:
await user?.delete();
Sie können Nutzer auch in der Firebase Konsole auf dem Tab Sicherheit > Authentifizierung > Nutzer löschen.
Nutzer neu authentifizieren
Für einige sicherheitsrelevante Aktionen, z. B.
das Löschen eines Kontos,
das Festlegen einer primären E-Mail-Adresseund
das Ändern eines Passworts, muss sich der Nutzer vor
Kurzem angemeldet haben. Wenn Sie eine dieser Aktionen ausführen und die Anmeldung des Nutzers zu lange her ist, schlägt die Aktion fehl und es wird eine FirebaseAuthException mit dem Code requires-recent-login ausgelöst.
In diesem Fall müssen Sie den Nutzer neu authentifizieren. Rufen Sie dazu neue Anmeldedaten vom Nutzer ab und übergeben Sie sie an reauthenticate. Beispiel:
// Prompt the user to re-provide their sign-in credentials.
// Then, use the credentials to reauthenticate:
await user?.reauthenticateWithCredential(credential);
Nutzerkonten importieren
Mit dem
Befehl auth:import der Firebase CLI können Sie Nutzerkonten aus einer Datei in Ihr Firebase-Projekt importieren. Beispiel:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14