Save the date - Google I/O returns May 18-20. Register to get the most out of the digital experience: Build your schedule, reserve space, participate in Q&As, earn Google Developer profile badges, and more. Register now
Эта страница переведена с помощью Cloud Translation API.
Switch to English

Аутентификация с Firebase в JavaScript с использованием пользовательской системы аутентификации

Вы можете интегрировать аутентификацию Firebase с пользовательской системой аутентификации, изменив свой сервер аутентификации для создания пользовательских подписанных токенов, когда пользователь успешно входит в систему. Ваше приложение получает этот токен и использует его для аутентификации в Firebase.

Прежде чем вы начнете

  1. Добавьте Firebase в свой проект JavaScript .
  2. Получите серверные ключи вашего проекта:
    1. Перейдите на страницу Service Accounts в настройках вашего проекта.
    2. Нажмите « Создать новый закрытый ключ» в нижней части раздела Firebase Admin SDK на странице « Учетные записи служб» .
    3. Пара открытого и закрытого ключей новой учетной записи службы автоматически сохраняется на вашем компьютере. Скопируйте этот файл на свой сервер аутентификации.

Аутентифицироваться с Firebase

  1. Когда пользователи входят в ваше приложение, отправьте свои учетные данные для входа (например, свое имя пользователя и пароль) на ваш сервер аутентификации. Ваш сервер проверяет учетные данные и возвращает пользовательский токен, если они действительны.
  2. После того, как вы получите пользовательский токен от вашего сервера аутентификации, передайте его signInWithCustomToken для входа пользователя:

    Интернет v8

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

    Интернет v9

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

Следующие шаги

После того, как пользователь входит в систему в первый раз, создается новая учетная запись пользователя, связанная с учетными данными, то есть с именем пользователя и паролем, номером телефона или информацией о провайдере аутентификации, с которыми пользователь вошел в систему. Эта новая учетная запись хранится как часть вашего проекта Firebase и может использоваться для идентификации пользователя в каждом приложении в вашем проекте, независимо от того, как пользователь входит в систему.

  • В ваших приложениях рекомендуемый способ узнать статус авторизации вашего пользователя - установить наблюдателя для объекта Auth . Затем вы можете получить базовую информацию о профиле User объекта User . См. Управление пользователями .

  • В своей базе данных Firebase Realtime и правилах безопасности облачного хранилища вы можете получить уникальный идентификатор пользователя вошедшего в систему из переменной auth и использовать его для управления данными, к которым пользователь может получить доступ.

Вы можете разрешить пользователям входить в ваше приложение с помощью нескольких поставщиков аутентификации, связав учетные данные поставщика аутентификации с существующей учетной записью пользователя.

Чтобы выйти из системы, вызовите signOut :

Интернет v8

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

Интернет v9

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

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