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, gdy użytkownik zaloguje się. Aplikacja otrzymuje ten token i używa go do uwierzytelniania w Firebase.

Zanim zaczniesz

  1. Dodaj Firebase do projektu JavaScript.
  2. Uzyskaj klucze serwera projektu:
    1. W konsoli Firebase otwórz Ustawienia > Konta usługi.
    2. U dołu sekcji pakiet Firebase Admin SDK kliknij Wygeneruj nowy klucz prywatny.
    3. Nowa para kluczy publicznych/prywatnych konta usługi zostanie automatycznie zapisana na Twoim komputerze. Skopiuj ten plik na serwer uwierzytelniania.

Uwierzytelnianie 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 dane logowania i w przypadku ich prawidłowości zwraca niestandardowy token.
  2. Po otrzymaniu niestandardowego tokena z 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 o dostawcy uwierzytelniania, za pomocą których użytkownik się zalogował. To nowe konto jest przechowywane w ramach projektu w Firebase i może służyć do identyfikowania użytkownika we wszystkich aplikacjach w projekcie, niezależnie od sposobu logowania.

  • Zalecanym sposobem sprawdzania stanu uwierzytelniania użytkownika w aplikacjach jest ustawienie obserwatora na obiekcie Auth. Następnie możesz pobrać podstawowe informacje o profilu użytkownika z obiektu User. Więcej informacji znajdziesz w artykule Zarządzanie użytkownikami.

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

Możesz zezwolić użytkownikom na logowanie się w aplikacji za pomocą wielu dostawców uwierzytelniania, łącząc dane logowania dostawcy uwierzytelniania z istniejącym 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.
});