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 für Ihre App registriert haben, mit Daten arbeiten, die durch Sicherheitsregeln geschützt sind. Wenn sich ein anonymer Nutzer für Ihre App registriert, können Sie seine Anmeldedaten mit dem anonymen Konto verknüpfen, damit er in zukünftigen Sitzungen weiterhin mit seinen geschützten Daten arbeiten kann.
Hinweis
- Firebase zu Ihrem JavaScript-Projekt hinzufügen
- Wenn Sie Ihre App noch nicht mit Ihrem Firebase-Projekt verknüpft haben, können Sie dies in der Firebase Console tun.
-
So aktivieren Sie die anonyme Authentifizierung:
- Wechseln Sie in der Firebase-Konsole zu Sicherheit > Authentifizierung.
- Aktivieren Sie auf dem Tab Anmeldemethode den Anmeldeanbieter Anonym.
- Optional: Wenn Sie für Ihr Projekt ein Upgrade auf Firebase Authentication with Identity Platform durchgeführt haben, können Sie die automatische Bereinigung aktivieren. Wenn Sie diese Einstellung aktivieren, werden anonyme Konten, die älter als 30 Tage sind, automatisch gelöscht. In Projekten, in denen die automatische Bereinigung aktiviert ist, wird die anonyme Authentifizierung nicht mehr auf Nutzungslimits oder Abrechnungskontingente angerechnet. Weitere Informationen finden Sie unter Automatische Bereinigung.
Anonyme Authentifizierung mit Firebase
Wenn ein abgemeldeter Nutzer eine App-Funktion verwendet, für die eine Authentifizierung mit Firebase erforderlich ist, melden Sie den Nutzer anonym an. Gehen Sie dazu so vor:
- Rufen Sie die Methode
signInAnonymouslyauf.Hier können Sie auch Fehler abfangen und behandeln. Eine Liste der Fehlercodes finden Sie in der Auth-Referenzdokumentation.Web
import { getAuth, signInAnonymously } from "firebase/auth"; const auth = getAuth(); signInAnonymously(auth) .then(() => { // Signed in.. }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; // ... });
Web
firebase.auth().signInAnonymously() .then(() => { // Signed in.. }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; // ... });
- Wenn die
signInAnonymously-Methode ohne Fehler abgeschlossen wird, wird der inonAuthStateChangedregistrierte Observer ausgelöst und Sie können die Kontodaten des anonymen Nutzers aus demUser-Objekt abrufen:Web
import { getAuth, onAuthStateChanged } from "firebase/auth"; const auth = getAuth(); onAuthStateChanged(auth, (user) => { if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/auth.user const uid = user.uid; // ... } else { // User is signed out // ... } });
Web
firebase.auth().onAuthStateChanged((user) => { if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/v8/firebase.User var uid = user.uid; // ... } else { // User is signed out // ... } });
Anonymes Konto in ein dauerhaftes Konto umwandeln
Wenn sich ein anonymer Nutzer für Ihre App registriert, möchten Sie ihm möglicherweise erlauben, seine Arbeit mit seinem neuen Konto fortzusetzen. So könnten Sie beispielsweise die Artikel, die der Nutzer vor der Registrierung in seinen Einkaufswagen gelegt hat, im Einkaufswagen seines neuen Kontos verfügbar machen. Führen Sie dazu folgende Schritte aus:
- Wenn sich der Nutzer registriert, führen Sie den Anmeldevorgang für den Authentifizierungsanbieter des Nutzers bis zum Aufrufen einer der
Auth.signInWith-Methoden durch, aber rufen Sie keine der Methoden auf. Rufen Sie beispielsweise das Google-ID-Token, das Facebook-Zugriffstoken oder die E‑Mail-Adresse und das Passwort des Nutzers ab. Rufen Sie ein
AuthCredentialfür den neuen Authentifizierungsanbieter ab:Google Log-in
Web
import { GoogleAuthProvider } from "firebase/auth"; const credential = GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);
Web
var credential = firebase.auth.GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);
Facebook-Anmeldung
Web
import { FacebookAuthProvider } from "firebase/auth"; const credential = FacebookAuthProvider.credential( response.authResponse.accessToken);
Web
var credential = firebase.auth.FacebookAuthProvider.credential( response.authResponse.accessToken);
Anmeldung mit E‑Mail-Adresse und Passwort
Web
import { EmailAuthProvider } from "firebase/auth"; const credential = EmailAuthProvider.credential(email, password);
Web
var credential = firebase.auth.EmailAuthProvider.credential(email, password);
Übergeben Sie das
AuthCredential-Objekt an dielink-Methode des angemeldeten Nutzers:Web
import { getAuth, linkWithCredential } from "firebase/auth"; const auth = getAuth(); linkWithCredential(auth.currentUser, credential) .then((usercred) => { const user = usercred.user; console.log("Anonymous account successfully upgraded", user); }).catch((error) => { console.log("Error upgrading anonymous account", error); });
Web
auth.currentUser.linkWithCredential(credential) .then((usercred) => { var user = usercred.user; console.log("Anonymous account successfully upgraded", user); }).catch((error) => { console.log("Error upgrading anonymous account", error); });
Wenn der Aufruf von link erfolgreich ist, kann das neue Konto des Nutzers auf die Firebase-Daten des anonymen Kontos zugreifen.
Automatische Bereinigung
Wenn Sie Ihr Projekt auf Firebase Authentication with Identity Platform aktualisiert haben, können Sie die automatische Bereinigung in der Firebase-Konsole aktivieren. Wenn Sie diese Funktion aktivieren, erlauben Sie Firebase, anonyme Konten, die älter als 30 Tage sind, automatisch zu löschen. In Projekten, in denen die automatische Bereinigung aktiviert ist, wird die anonyme Authentifizierung nicht auf Nutzungslimits oder Abrechnungskontingente angerechnet.
- Alle anonymen Konten, die nach der Aktivierung der automatischen Bereinigung erstellt wurden, können jederzeit nach 30 Tagen nach der Erstellung automatisch gelöscht werden.
- Vorhandene anonyme Konten können 30 Tage nach der Aktivierung der automatischen Bereinigung automatisch gelöscht werden.
- Wenn Sie die automatische Bereinigung deaktivieren, bleiben alle anonymen Konten, die zum Löschen vorgesehen sind, weiterhin zum Löschen vorgesehen.
- Wenn Sie ein anonymes Konto „upgraden“, indem Sie es mit einer Anmeldemethode verknüpfen, wird das Konto nicht automatisch gelöscht.
Wenn Sie sehen möchten, wie viele Nutzer betroffen sind, bevor Sie diese Funktion aktivieren, und Sie Ihr Projekt auf Firebase Authentication with Identity Platform aktualisiert haben, können Sie in Cloud Logging nach is_anon filtern.
Nächste Schritte
Da sich Nutzer jetzt mit Firebase authentifizieren können, können Sie ihren Zugriff auf Daten in Ihrer Firebase-Datenbank mit Firebase-Regeln steuern.