Ошибка учетных данных Firebase при попытке получить коллекцию - PullRequest
1 голос
/ 01 марта 2020

Я использую узел с express для моего проекта. Все работает, пока я не попытаюсь собрать коллекции с помощью промежуточного программного обеспечения.

Это промежуточное ПО:

const FBAuth = (req, res, next) => {
  let idToken;
  if (req.headers.authorization && req.headers.authorization.split(' ')[0] === 'Bearer') {
    idToken = req.headers.authorization.split(' ')[1];
  } else {
    return res.status(403).json({ error: 'No Token' });
  }
  admin.auth().verifyIdToken(idToken)
    .then(decodedToken => {
      req.user = decodedToken;
      console.log(decodedToken);

Я веду журнал на idToken и, похоже, все в порядке. Я консоль записываю в журнал decodedToken и получаю следующее:

iss: 'https://securetoken.google.com/projectName',
>    aud: 'projectName',
>    auth_time: 1583062225,
>    user_id: 'an ID',
>    sub: 'same as user_id',
>    iat: number...,
>    exp: number...,
>    email: 'testmd@email.com',
>    email_verified: false,
>    firebase: { identities: { email: [Array] }, sign_in_provider: 'password' },
>    uid: 'same as user_id'

Но затем, если я пытаюсь получить коллекцию, например, "users" (то же, что и имя коллекции, как в firebase):

admin.auth().verifyIdToken(idToken)
    .then(decodedToken => {
      req.user = decodedToken;
      console.log(decodedToken);
      return db.collection("users")
       .where('email', '==', req.user.email)
       .limit(1)
       .get()
    })
     .then(data => {
       res.json(data)
     })

Независимо от того, какую коллекцию я пытаюсь получить или как я всегда получаю эту ошибку:

UnhandledPromiseRejectionWarning: Ошибка: не удалось загрузить учетные данные по умолчанию. Перейдите к https://cloud.google.com/docs/authentication/getting-started для получения дополнительной информации ...

Итак, я прочитал о учетных данных, я добавляю их так:

var serviceAccount = require("./serviceAccountKey.json");

const config = {
...more configs
atabaseURL: "https://...",
credential: admin.credential.cert(serviceAccount),
projectId: "projecId",
...more config
}

firebase.initializeApp(config)

И в the serviceAccountKey. json У меня есть ключ, полученный от firebase, сгенерированный на вкладке службы учетной записи.

После добавления учетных данных по-прежнему возникает та же ошибка, что и выше.

1 Ответ

1 голос
/ 01 марта 2020

Код, который вы показываете, называет это:

firebase.initializeApp(config)

Но мы не знаем, что такое firebase. Я уверен, что это не Firebase Admin SDK. Я подозреваю, что вы должны инициализировать Admin SDK, используя переменную admin, которую вы используете для запроса базы данных в вашем приложении exprss:

admin.initializeApp(config)
...