Admin SDK позволяет вам взаимодействовать с Firebase из привилегированных сред для выполнения таких действий, как:

  • Чтение и запись данных базы данных в реальном времени с полными правами администратора.
  • Программно отправляйте сообщения Firebase Cloud Messaging, используя простой альтернативный подход к протоколам сервера Firebase Cloud Messaging.
  • Создание и проверка токенов аутентификации Firebase.
  • Получите доступ к ресурсам Google Cloud Platform, таким как корзины Cloud Storage и базы данных Cloud Firestore, связанные с вашими проектами Firebase.
  • Создайте собственную упрощенную консоль администратора, чтобы выполнять такие действия, как поиск пользовательских данных или изменение адреса электронной почты пользователя для аутентификации.

О чем будет рассказано в этой статье:

  • Добавление Admin SDK
  • Инициализация Admin SDK
  • Первая функция администратора
  • Авторизация

Добавление Admin SDK

Чтобы использовать Admin SDK, вам нужно сначала добавить в проект firebase-admin пакет npm:

yarn add firebase-admin

После создания проекта Firebase вы можете инициализировать SDK со стратегией авторизации, которая объединяет файл вашей учетной записи службы вместе с Учетными данными по умолчанию для приложения Google.

Инициализация Admin SDK

Сначала откройте Settings вашего проекта:

Щелкните вкладку Service accounts:

Далее Generate new private key:

Будет сгенерирован и загружен файл JSON:

Нам понадобится всего три пары "ключ-значение" - project_id, private_key и client_email.

Я буду использовать .env переменные вместо файла JSON, поэтому нам понадобится пакет dotenv npm, добавленный в наш проект Node.js:

yarn add dotenv

Затем добавьте этот фрагмент кода в основную функцию:

Вы можете получить databaseURL значение в настройках вашего проекта:

Теперь мы полностью готовы к созданию нашей первой функции с использованием Admin SDK.

Первая функция администратора

Наша первая функция администратора создаст новый user документ в admin коллекции, очень просто :

Давайте смоделируем наши функции, запустив команду npm run serve и протестируем ее:

Консоль эмуляции Firebase покажет нам URL-адрес, по которому наша функция createDocument доступна на нашем локальном компьютере:

Давайте сделаем это. Вы можете протестировать это в своем браузере….

А что нам покажет консоль Firebase?

Хорошо, все работает как положено.

Авторизация

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

Сначала нам нужно добавить заголовок authorization.

Во фрагменте кода я добавляю заголовок authorization к экземпляру axios на стороне клиента:

Затем давайте добавим функцию декодера токенов в наш проект Cloud Function:

Как вы, наверное, заметили, в примере я использую токен some-test-value. НЕ ДЕЛАЙТЕ ЭТОГО В ПРОИЗВОДСТВЕ!

Теперь мы можем добавить verifyAndDecodeToken во вторую функцию примера - deleteDocument:

Что будем удалять?

Теперь мы можем это проверить

  1. Запустите npm run serve команду. Firebase покажет нам локальный URL для запроса:

2. Проверьте ошибку заголовка NO-AUTH:

3. Вы можете использовать Почтальон или Insomnia для запросов с заголовками (я буду использовать Insomnia):

4. Проверьте консоль Firebase:

Приятно, все работает как положено.

Если вам понравился этот рассказ, вы можете также проверить Список всех моих рассказов. Удачного кодирования!