Почти во всех типичных случаях использования вам не нужно указывать служебную учетную запись при работе с Firebase Admin SDK в облачных функциях.Это связано с тем, что Cloud Functions предоставляет учетные данные для учетной записи службы по умолчанию в проекте, в котором развернута функция.(Эта учетная запись может рассматриваться как учетная запись службы App Engine по умолчанию в консоли Cloud.)
Настоятельно рекомендуется инициализировать Admin SDK без аргументов и принять эту учетную запись по умолчанию:
const admin = require('firebase-admin');
admin.initializeApp(); // accept the default service account
В рамках принятия этого значения по умолчанию Admin SDK также будет понимать URL-адрес вашего сегмента базы данных реального времени по умолчанию и URL-адрес вашего хранилища облачного хранилища по умолчанию.Вам не нужно предоставлять эти значения.Таким образом, ваш код будет намного проще переносить на другие проекты.
Если вам нужен доступ к ресурсам вашего проекта, отличным от заданных по умолчанию, вы также можете инициализировать другие экземпляры firebase-admin, чтобы они указывали на те, которыевы явно настраиваете.Это то, что иллюстрирует ваш второй пример кода.Если у вас нет ресурсов не по умолчанию для доступа, не беспокойтесь об этом.
Если есть что-то, что может сделать учетная запись службы, вы можете предоставить эту роль в консоли Cloud.Единственное заметное действие, которое эта учетная запись в настоящее время не может выполнять по умолчанию, - это криптографическое подписание больших двоичных объектов.На практике это означает, что он не может сгенерировать подписанные URL для объекта, хранящегося в облачном хранилище.Это довольно распространенная вещь в облачных функциях.Чтобы исправить это, вам нужно предоставить роль signBlob учетной записи службы по умолчанию.