Я использую узел с 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, сгенерированный на вкладке службы учетной записи.
После добавления учетных данных по-прежнему возникает та же ошибка, что и выше.