Check out what’s new from Firebase at Google I/O 2022. Learn more

Uwierzytelniaj się w Firebase anonimowo za pomocą JavaScript

Za pomocą Uwierzytelniania Firebase możesz tworzyć tymczasowe konta anonimowe i używać ich do uwierzytelniania w Firebase. Te tymczasowe anonimowe konta mogą służyć do umożliwienia użytkownikom, którzy nie zarejestrowali się jeszcze w Twojej aplikacji, pracy z danymi chronionymi przez reguły bezpieczeństwa. Jeśli anonimowy użytkownik zdecyduje się zarejestrować w Twojej aplikacji, możesz połączyć jego poświadczenia logowania z anonimowym kontem , aby mógł kontynuować pracę z chronionymi danymi w przyszłych sesjach.

Zanim zaczniesz

  1. Dodaj Firebase do swojego projektu JavaScript .
  2. Jeśli aplikacja nie została jeszcze połączona z projektem Firebase, zrób to z konsoli Firebase .
  3. Włącz uwierzytelnianie anonimowe:
    1. W konsoli Firebase otwórz sekcję Auth .
    2. Na stronie Metody logowania włącz metodę logowania anonimowego .

Uwierzytelnij się anonimowo w Firebase

Gdy wylogowany użytkownik korzysta z funkcji aplikacji wymagającej uwierzytelnienia w Firebase, zaloguj się anonimowo, wykonując następujące czynności:

  1. Wywołaj metodę signInAnonymously :

    Web version 9

    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 version 8

    firebase.auth().signInAnonymously()
      .then(() => {
        // Signed in..
      })
      .catch((error) => {
        var errorCode = error.code;
        var errorMessage = error.message;
        // ...
      });
    Tutaj też możesz wyłapać i obsłużyć błędy. Listę kodów błędów znajdziesz w Auth Reference Docs .
  2. Jeśli metoda signInAnonymously zakończy się bezbłędnie, nastąpi wyzwolenie obserwatora zarejestrowanego w onAuthStateChanged i możesz pobrać dane konta anonimowego użytkownika z obiektu User :

    Web version 9

    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/firebase.User
        const uid = user.uid;
        // ...
      } else {
        // User is signed out
        // ...
      }
    });

    Web version 8

    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/firebase.User
        var uid = user.uid;
        // ...
      } else {
        // User is signed out
        // ...
      }
    });

Konwertuj konto anonimowe na konto stałe

Gdy anonimowy użytkownik zarejestruje się w Twojej aplikacji, możesz zezwolić mu na kontynuowanie pracy na nowym koncie — na przykład możesz chcieć, aby elementy dodane przez użytkownika do koszyka przed zarejestrowaniem się były dostępne w nowym koszyk konta. Aby to zrobić, wykonaj następujące czynności:

  1. Gdy użytkownik zarejestruje się, zakończ proces logowania dla dostawcy uwierzytelniania użytkownika, aż do wywołania jednej z metod Auth.signInWith , ale nie w tym. Na przykład uzyskaj token identyfikatora Google użytkownika, token dostępu do Facebooka lub adres e-mail i hasło.
  2. Uzyskaj AuthCredential dla nowego dostawcy uwierzytelniania:

    Logowanie przez Google

    Web version 9

    import { GoogleAuthProvider } from "firebase/auth";
    
    const credential = GoogleAuthProvider.credential(
      googleUser.getAuthResponse().id_token);

    Web version 8

    var credential = firebase.auth.GoogleAuthProvider.credential(
      googleUser.getAuthResponse().id_token);
    Nazwa użytkownika Facebook

    Web version 9

    import { FacebookAuthProvider } from "firebase/auth";
    
    const credential = FacebookAuthProvider.credential(
      response.authResponse.accessToken);

    Web version 8

    var credential = firebase.auth.FacebookAuthProvider.credential(
      response.authResponse.accessToken);
    E-mail-hasło logowania

    Web version 9

    import { EmailAuthProvider } from "firebase/auth";
    
    const credential = EmailAuthProvider.credential(email, password);

    Web version 8

    var credential = firebase.auth.EmailAuthProvider.credential(email, password);
  3. Przekaż obiekt AuthCredential do metody link logowania użytkownika:

    Web version 9

    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 version 8

    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);
      });

Jeśli wywołanie link się powiedzie, nowe konto użytkownika może uzyskać dostęp do danych Firebase konta anonimowego.

Następne kroki

Teraz, gdy użytkownicy mogą uwierzytelniać się w Firebase, możesz kontrolować ich dostęp do danych w bazie danych Firebase za pomocą reguł Firebase .