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
:
Что будем удалять?
Теперь мы можем это проверить
- Запустите
npm run serve
команду. Firebase покажет нам локальный URL для запроса:
2. Проверьте ошибку заголовка NO-AUTH:
3. Вы можете использовать Почтальон или Insomnia для запросов с заголовками (я буду использовать Insomnia):
4. Проверьте консоль Firebase:
Приятно, все работает как положено.
Если вам понравился этот рассказ, вы можете также проверить Список всех моих рассказов. Удачного кодирования!