Различия при инициализации приложения с помощью firebase-admin с использованием пустых параметров, учетных данных admin.credential.applicationDefault () и serviceAccount - PullRequest
0 голосов
/ 14 января 2020

С учетом облачной функции Firebase Node.js среда, в которой это:

OPTION # 1

admin.initializeApp()

отличается от этого:

ВАРИАНТ № 2

admin.initializeApp({
  credential: admin.credential.applicationDefault()
});

или это:

ВАРИАНТ № 3

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
});

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

1 Ответ

2 голосов
/ 14 января 2020

Следующая информация основана на firebase-admin-node@8.9.0, текущем Node.js SDK на момент публикации:

Опция 1 и Опция 2 функционально одинаковы для используемых учетных данных.

Всякий раз, когда объект FirebaseAppOptions (первый параметр) не имеет свойства 'credential', он устанавливается на getApplicationDefault(...), так же, как в методе admin.credential.applicationDefault(). Это учетные данные, предоставленные средой выполнения Google / Firebase, в которой вы выполняете свой код.

Однако в Опция 1 - переменные конфигурации Firebase (databaseURL, databaseAuthVariableOverride, projectId, et c) заполняются с помощью переменной окружения FIREBASE_CONFIG, тогда как в Option 2 и Option 3 они должны быть явно установлены вашим кодом.

Переменная среды FIREBASE_CONFIG является либо строкой JSON, либо путем к файлу. В среде Firebase Cloud Functions или локально обслуживаемом проекте эта переменная среды заполняется соответствующей конфигурацией проекта Firebase.

Наконец, Опция 3 позволяет настроить собственную учетную запись службы для использования для вашего экземпляра Admin SDK. Вы можете использовать это, чтобы сузить доступ, который есть у вашего Admin SDK - например, доступ только к Cloud Firestore, а не к Cloud Storage. Это особенно полезно при работе со вторичными экземплярами Admin SDK, которые имеют единственное назначение (admin.initializeApp({...}, 'some-named-instance')). Его также можно использовать, когда вы хотите запустить свой код в среде тестирования, а не в производственной базе данных. Это также позволяет вам добавлять больше областей к другим службам, принадлежащим Google, в учетную запись службы, такую ​​как Gmail и Google Docs, для простой реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...