Sie können die Firebase-Authentifizierung verwenden, um temporäre anonyme Konten für die Authentifizierung bei Firebase zu erstellen und zu verwenden. Diese temporären anonymen Konten können verwendet werden, um Benutzern, die sich noch nicht bei Ihrer App angemeldet haben, die Arbeit mit Daten zu ermöglichen, die durch Sicherheitsregeln geschützt sind. Wenn sich ein anonymer Benutzer dazu entschließt, sich bei Ihrer App anzumelden, können Sie seine Anmeldeinformationen mit dem anonymen Konto verknüpfen, damit er in zukünftigen Sitzungen weiterhin mit seinen geschützten Daten arbeiten kann.
Bevor Sie beginnen
- Fügen Sie Firebase zu Ihrem JavaScript-Projekt hinzu .
- Wenn Sie Ihre App noch nicht mit Ihrem Firebase-Projekt verbunden haben, tun Sie dies über die Firebase-Konsole .
- Anonyme Authentifizierung aktivieren:
- Öffnen Sie in der Firebase-Konsole den Abschnitt „Auth“ .
- Aktivieren Sie auf der Seite „Anmeldemethoden“ die Anmeldemethode „Anonym“ .
- Optional : Wenn Sie Ihr Projekt mit Identity Platform auf Firebase Authentication aktualisiert 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 mit aktivierter automatischer Bereinigung wird die anonyme Authentifizierung nicht mehr auf Nutzungslimits oder Abrechnungskontingente angerechnet. Siehe Automatische Bereinigung .
Authentifizieren Sie sich anonym bei Firebase
Wenn ein abgemeldeter Benutzer eine App-Funktion verwendet, die eine Authentifizierung bei Firebase erfordert, melden Sie den Benutzer anonym an, indem Sie die folgenden Schritte ausführen:
- Rufen Sie die Methode
signInAnonymously
auf:Hier können Sie auch Fehler erkennen und beheben. Eine Liste der Fehlercodes finden Sie in den Auth-Referenzdokumenten .Web modular API
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 namespaced API
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 inonAuthStateChanged
registrierte Beobachter ausgelöst und Sie können die Kontodaten des anonymen Benutzers aus demUser
Objekt abrufen:Web modular API
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 namespaced API
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 // ... } });
Wandeln Sie ein anonymes Konto in ein permanentes Konto um
Wenn sich ein anonymer Benutzer bei Ihrer App anmeldet, möchten Sie ihm möglicherweise erlauben, seine Arbeit mit seinem neuen Konto fortzusetzen. Sie möchten beispielsweise die Artikel, die der Benutzer vor der Anmeldung in seinen Warenkorb gelegt hat, in seinem neuen Konto verfügbar machen Warenkorb des Kontos. Führen Sie dazu die folgenden Schritte aus:
- Wenn sich der Benutzer anmeldet, schließen Sie den Anmeldevorgang für den Authentifizierungsanbieter des Benutzers bis zum Aufruf einer der
Auth.signInWith
Methoden ab, jedoch nicht einschließlich. Rufen Sie beispielsweise das Google-ID-Token, das Facebook-Zugriffstoken oder die E-Mail-Adresse und das Passwort des Benutzers ab. Rufen Sie ein
AuthCredential
für den neuen Authentifizierungsanbieter ab:Google-Anmeldung
Web modular API
import { GoogleAuthProvider } from "firebase/auth"; const credential = GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);
Web namespaced API
var credential = firebase.auth.GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);
Facebook Login
Web modular API
import { FacebookAuthProvider } from "firebase/auth"; const credential = FacebookAuthProvider.credential( response.authResponse.accessToken);
Web namespaced API
var credential = firebase.auth.FacebookAuthProvider.credential( response.authResponse.accessToken);
Anmeldung per E-Mail und Passwort
Web modular API
import { EmailAuthProvider } from "firebase/auth"; const credential = EmailAuthProvider.credential(email, password);
Web namespaced API
var credential = firebase.auth.EmailAuthProvider.credential(email, password);
Übergeben Sie das
AuthCredential
Objekt an dielink
Methode des angemeldeten Benutzers:Web modular API
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 namespaced API
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 link
Aufruf erfolgreich ist, kann das neue Konto des Benutzers auf die Firebase-Daten des anonymen Kontos zugreifen.
Automatische Bereinigung
Wenn Sie Ihr Projekt mit Identity Platform auf Firebase Authentication 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 mit aktivierter automatischer Bereinigung wird die anonyme Authentifizierung nicht auf Nutzungsbeschränkungen oder Abrechnungskontingente angerechnet.
- Alle anonymen Konten, die nach der Aktivierung der automatischen Bereinigung erstellt wurden, können 30 Tage nach der Erstellung jederzeit automatisch gelöscht werden.
- Bestehende anonyme Konten können 30 Tage nach Aktivierung der automatischen Bereinigung automatisch gelöscht werden.
- Wenn Sie die automatische Bereinigung deaktivieren, bleibt die Löschung aller anonymen Konten, deren Löschung geplant ist, weiterhin geplant.
- Wenn Sie ein anonymes Konto „aktualisieren“, indem Sie es mit einer beliebigen Anmeldemethode verknüpfen, wird das Konto nicht automatisch gelöscht.
Wenn Sie sehen möchten, wie viele Benutzer betroffen sind, bevor Sie diese Funktion aktivieren, und Sie Ihr Projekt auf Firebase Authentication mit Identity Platform aktualisiert haben, können Sie in Cloud Logging nach is_anon
filtern.
Nächste Schritte
Da sich Benutzer nun bei Firebase authentifizieren können, können Sie ihren Zugriff auf Daten in Ihrer Firebase-Datenbank mithilfe von Firebase-Regeln steuern.