Uwierzytelniaj za pomocą Firebase w języku JavaScript z użyciem niestandardowego systemu uwierzytelniania

Możesz zintegrować Firebase Authentication z niestandardowym systemem uwierzytelniania, modyfikując serwer uwierzytelniania, aby generował niestandardowe podpisane tokeny po pomyślnym zalogowaniu się użytkownika. Twoja aplikacja otrzymuje ten token i używa go do uwierzytelniania w Firebase.

Zanim zaczniesz

  1. Dodaj Firebase do projektu JavaScript.
  2. Pobierz klucze serwera projektu:
    1. Otwórz stronę Konta usługi w ustawieniach projektu.
    2. U dołu sekcji Firebase Admin SDK na stronie Konta usługi kliknij Wygeneruj nowy klucz prywatny.
    3. Para kluczy publicznych/prywatnych nowego konta usługi zostanie automatycznie zapisana na komputerze. Skopiuj ten plik na serwer uwierzytelniania.

Uwierzytelnienie za pomocą Firebase

  1. Gdy użytkownicy logują się w aplikacji, wysyłaj ich dane logowania (np. nazwę użytkownika i hasło) na serwer uwierzytelniania. Twój serwer sprawdza poświadczenia tożsamości i zwraca token niestandardowy, jeśli są one prawidłowe.
  2. Gdy otrzymasz niestandardowy token od serwera uwierzytelniania, przekaż go do signInWithCustomToken, aby zalogować użytkownika:

    Web

    import { getAuth, signInWithCustomToken } from "firebase/auth";
    
    const auth = getAuth();
    signInWithCustomToken(auth, token)
      .then((userCredential) => {
        // Signed in
        const user = userCredential.user;
        // ...
      })
      .catch((error) => {
        const errorCode = error.code;
        const errorMessage = error.message;
        // ...
      });

    Web

    firebase.auth().signInWithCustomToken(token)
      .then((userCredential) => {
        // Signed in
        var user = userCredential.user;
        // ...
      })
      .catch((error) => {
        var errorCode = error.code;
        var errorMessage = error.message;
        // ...
      });

Dalsze kroki

Gdy użytkownik zaloguje się po raz pierwszy, zostanie utworzone nowe konto użytkownika i połączone z danymi logowania, czyli nazwą użytkownika i hasłem, numerem telefonu lub informacjami dostawcy uwierzytelniania, za pomocą których użytkownik się zalogował. To nowe konto jest przechowywane w ramach projektu Firebase i może służyć do identyfikowania użytkownika we wszystkich aplikacjach w projekcie, niezależnie od tego, jak użytkownik się loguje.

  • W swoich aplikacjach możesz sprawdzić stan uwierzytelniania użytkownika, ustawiając obserwatora na obiekcie Auth. Następnie możesz uzyskać podstawowe informacje o profilu użytkownika z obiektu User. Zobacz Zarządzanie użytkownikami.

  • W regułach Firebase Realtime DatabaseCloud Storage Regułach bezpieczeństwa możesz pobrać z zmiennej auth unikalny identyfikator zalogowanego użytkownika i użyć go do kontrolowania, do jakich danych ma on dostęp.

Możesz zezwolić użytkownikom na logowanie się w aplikacji za pomocą danych logowania od wielu dostawców uwierzytelniania, połączając je z dotychczasowym kontem użytkownika.

Aby wylogować użytkownika, wywołaj funkcję signOut:

Web

import { getAuth, signOut } from "firebase/auth";

const auth = getAuth();
signOut(auth).then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});

Web

firebase.auth().signOut().then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});