Anonym mit JavaScript bei Firebase authentifizieren

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 in Ihrer 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

  1. Fügen Sie Ihrem JavaScript-Projekt Firebase hinzu.
  2. Wenn Sie Ihre App noch nicht mit Ihrem Firebase-Projekt verknüpft haben, tun Sie dies in der Firebase Console.
  3. Anonyme Authentifizierung aktivieren:
    1. Öffne in der Firebase Console den Bereich Auth.
    2. Aktivieren Sie auf der Seite Anmeldemethoden die Anmeldemethode Anonym.
    3. Optional: Wenn Sie Ihr Projekt auf Firebase Authentication with Identity Platform umgestellt 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.

Anonym mit Firebase authentifizieren

Wenn ein abgemeldeter Nutzer eine App-Funktion verwendet, für die eine Authentifizierung mit Firebase erforderlich ist, melden Sie ihn anonym an. Gehen Sie dazu so vor:

  1. Rufen Sie die Methode signInAnonymously auf:

    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;
        // ...
      });
    Hier können Sie auch Fehler abfangen und behandeln. Eine Liste der Fehlercodes findest du in den Auth-Referenzdokumenten.
  2. Wenn die signInAnonymously-Methode ohne Fehler abgeschlossen wird, wird der im onAuthStateChanged registrierte Beobachter ausgelöst und Sie können die Kontodaten des anonymen Nutzers aus dem User-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 in Ihrer App registriert, können Sie ihm erlauben, seine Arbeit mit seinem neuen Konto fortzusetzen. Sie können beispielsweise die Artikel, die der Nutzer seinem Einkaufswagen hinzugefügt hat, bevor er sich registriert hat, im Einkaufswagen seines neuen Kontos verfügbar machen. Führen Sie dazu folgende Schritte aus:

  1. Wenn sich der Nutzer registriert, führe den Anmeldevorgang für den Authentifizierungsanbieter des Nutzers bis zum Aufruf einer der Auth.signInWith-Methoden durch, aber nicht einschließlich dieses Aufrufs. Beispiel: Google-ID-Token, Facebook-Zugriffstoken oder E-Mail-Adresse und Passwort des Nutzers abrufen
  2. Rufen Sie eine AuthCredential fü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 per 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);
  3. Übergeben Sie das AuthCredential-Objekt an die Methode link 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 war, 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 umgestellt 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 nach 30 Tagen nach der Erstellung jederzeit automatisch gelöscht werden.
  • Vorhandene anonyme Konten können 30 Tage nach Aktivierung der automatischen Bereinigung automatisch gelöscht werden.
  • Wenn Sie die automatische Bereinigung deaktivieren, bleiben alle anonymen Konten, die zum Löschen geplant sind, weiterhin zum Löschen geplant.
  • Wenn Sie ein anonymes Konto „upgraden“, indem Sie es mit einer Anmeldemethode verknüpfen, wird es nicht automatisch gelöscht.

Wenn Sie vor der Aktivierung dieser Funktion sehen möchten, wie viele Nutzer davon betroffen sind, und Sie Ihr Projekt auf Firebase Authentication with Identity Platform umgestellt 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 mithilfe von Firebase-Regeln steuern.