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 zabezpieczeń. Jeśli użytkownik anonimowy postanawia zapisać się do swojej aplikacji, możesz połączyć swoje dane logowania do konta anonimowego , tak aby mogły kontynuować pracę z ich chronionych danych w przyszłych sesjach.

Zanim zaczniesz

  1. Dodaj Firebase do projektu JavaScript .
  2. Jeśli nie zostały jeszcze podłączone swoją aplikację do projektu Firebase, zrobić z konsoli Firebase .
  3. Włącz uwierzytelnianie anonimowe:
    1. W konsoli Firebase otwórz sekcję Auth.
    2. Na stronie logowania w Methods, umożliwienie logowania metody Anonymous.

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łać signInAnonymously metodę:

    Wersja internetowa 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;
        // ...
      });

    Wersja internetowa 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. Aby uzyskać listę kodów błędów mają zapoznać się z Autentycznymi Odniesienia Docs .
  2. Jeśli signInAnonymously finalizuje metoda bez błędu, obserwator zarejestrowana w onAuthStateChanged wyzwoli i można uzyskać dane konta anonimowego użytkownika od User obiektu:

    Wersja internetowa 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
        // ...
      }
    });

    Wersja internetowa 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 up, ukończyć logowania przepływu dla dostawcy uwierzytelniania użytkownika zależy, ale nie w tym, nazywając jedną z Auth.signInWith metod. Na przykład uzyskaj token identyfikatora Google użytkownika, token dostępu do Facebooka lub adres e-mail i hasło.
  2. Uzyskać AuthCredential dla nowego dostawcy uwierzytelniania:

    Logowanie przez Google

    Wersja internetowa 9

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

    Wersja internetowa 8

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

    Wersja internetowa 9

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

    Wersja internetowa 8

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

    Wersja internetowa 9

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

    Wersja internetowa 8

    var credential = firebase.auth.EmailAuthProvider.credential(email, password);
  3. Przepuścić AuthCredential obiekt do logowania użytkownika link metodą:

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

    Wersja internetowa 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 powiedzie, nowe konto użytkownika może uzyskać dostęp do konta anonimowego użytkownika dane Firebase.

Następne kroki

Teraz użytkownicy mogą uwierzytelniać z Firebase można kontrolować dostęp do danych w bazie danych Firebase zastosowaniem zasady Firebase .