'auth / invalid-api-key' При разрешении Admin SDK обнаружить служебную учетную запись - PullRequest
0 голосов
/ 03 февраля 2020

На разных страницах документации Firebase Admin SDK, например, эта страница , предлагается:

Если ваш код развернут в среде, управляемой Google, Admin SDK может попытаться автоматически обнаружить ... учетную запись службы, настроенную для вашего приложения ... Чтобы использовать эти методы подписи, инициализируйте SDK с учетными данными приложения Google по умолчанию и не указывайте строку идентификатора учетной записи службы: admin.initializeApp();

Когда я это делаю, я получаю следующее сообщение об ошибке:

[Ошибка: ваш ключ API недействителен, пожалуйста, проверьте, что вы скопировали его правильно.] Code : 'auth / invalid-api-key', сообщение: 'Ваш ключ API недействителен, пожалуйста, проверьте, что вы скопировали его правильно.'

Обратите внимание, что я не получаю это сообщение об ошибке, когда я вручную скачайте и импортируйте учетные данные и файлы учетной записи службы JSON в моем проекте.

Подробная информация для воспроизведения ошибки: 1- Я развертываю это в облачных функциях с использованием Firebase CLI. Итак, в основном, я использую firebase deploy.

2 - вот минимальный код в моем Node.js приложении:

const admin = require("firebase-admin");
const config = require("./firebase-config");
admin.initializeApp();

const firebase = require("firebase");
firebase.initializeApp(config);

const functions = require("firebase-functions");
const express = require("express");
const bodyParser = require("body-parser");

const app = express();
app.use(bodyParser.json());

const cors = require("cors");
app.use(cors());

app.get("/", Some_Function);

exports.api = functions.https.onRequest(app);

Ошибка происходит, когда я заменяю firebase.initializeApp(config); на firebase.initializeApp();

1 Ответ

3 голосов
/ 03 февраля 2020

Вы пытаетесь инициализировать Firebase Client SDK в серверной среде:

const firebase = require("firebase");
firebase.initializeApp(config);

Клиентский SDK принимает совершенно другой набор учетных данных по сравнению с firebase-admin. Вы можете инициализировать firebase-admin без каких-либо аргументов в управляемых средах GCP (например, Cloud Functions, Cloud Run), но это не относится к firebase. Вам необходимо предоставить действительную конфигурацию клиентского приложения, полученную из вашего проекта Firebase.

const admin = require('firebase-admin');
admin.initializeApp(); // This is ok

const firebase = require('firebase');
firebase.initializeApp(); // This is wrong

Подробнее о том, как получить конфигурацию клиентского приложения, см. https://firebase.google.com/docs/web/setup#config -объект .

Также обратите внимание, что использование клиентского SDK в среде, подобной Функции довольно необычные. Я бы посоветовал вам пересмотреть свой вариант использования и посмотреть, действительно ли вам нужно использовать firebase client SDK в вашей функции.

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