Mit Firebase Authentication können Sie temporäre anonyme Konten erstellen und verwenden, um sich bei Firebase zu authentifizieren. Mit diesen temporären anonymen Konten können Nutzer, die sich noch nicht in Ihrer App registriert haben, mit durch Sicherheitsregeln geschützten Daten arbeiten. Wenn sich ein anonymer Nutzer für Ihre App registriert, können Sie ihre Anmeldedaten mit dem anonymen Konto zu verknüpfen, damit sie auch in Zukunft weiterhin mit ihren geschützten Daten arbeiten können.
Hinweis
Folgen Sie gegebenenfalls der Anleitung im Startleitfaden.
Anonyme Anmeldung aktivieren:
- Öffnen Sie in der Firebase Console im Bereich Authentifizierung die Seite Anmeldemethode.
- Aktivieren Sie auf der Seite Anmeldemethode die Option Anonyme Anmeldung. und klicken Sie auf Speichern.
Anonym bei Firebase authentifizieren
Wenn ein abgemeldeter Nutzer eine App-Funktion verwendet, für die eine Authentifizierung mit
Firebase: 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.");
}
}
Umwandlung eines anonymen Kontos in ein dauerhaftes Konto
Wenn sich ein anonymer Nutzer bei Ihrer App registriert, sollten Sie ihm erlauben, seine Arbeit mit dem neuen Konto fortsetzen. Beispiel: Sie möchten möglicherweise eine Artikel, die Nutzende vor der Registrierung in den Einkaufswagen gelegt haben im Einkaufswagen ihres neuen Kontos verfügbar sind. Führen Sie dazu folgende Schritte aus:
Wenn sich der Nutzer registriert, führe den Anmeldevorgang für den Authentifizierungsanbieter des Nutzers bis zum Aufruf einer der
signInWith
-Methoden durch, aber nicht bis dahin. Rufen Sie beispielsweise das Google-ID-Token des Nutzers ab, Facebook-Zugriffstoken oder E-Mail-Adresse und Passwort.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.
Übergib das
Credential
-Objekt an daslinkWithCredential()
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 in Ihrem Projekt 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 Ihren Firebase Realtime Database- und Cloud Storage-Sicherheitsregeln 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 Mehrfachauthentifizierung in Ihrer App anzumelden durch Verknüpfen der Anmeldedaten des Authentifizierungsanbieters mit einem eines bestehenden Nutzerkontos.
Um einen Nutzer abzumelden, rufen Sie signOut()
auf:
await FirebaseAuth.instance.signOut();