Node.js 尝试获取集合时发生Firebase凭据错误
我正在将节点与express一起用于我的项目。在我尝试使用中间件获取集合之前,一切都正常 这是中间件:Node.js 尝试获取集合时发生Firebase凭据错误,node.js,express,google-cloud-firestore,firebase-authentication,firebase-admin,Node.js,Express,Google Cloud Firestore,Firebase Authentication,Firebase Admin,我正在将节点与express一起用于我的项目。在我尝试使用中间件获取集合之前,一切都正常 这是中间件: const FBAuth = (req, res, next) => { let idToken; if (req.headers.authorization && req.headers.authorization.split(' ')[0] === 'Bearer') { idToken = req.headers.authorization.spli
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记录在控制台上,似乎没有问题。
我将解码的声音记录在控制台日志中,得到以下信息:
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中的集合名称相同):
无论我尝试获取什么集合,或者我总是以何种方式获取此错误:
未处理的PromisejectionWarning:错误:无法加载默认凭据。浏览以获取更多信息
因此,我阅读了有关凭据的信息,我添加了如下内容:
var serviceAccount = require("./serviceAccountKey.json");
const config = {
...more configs
atabaseURL: "https://...",
credential: admin.credential.cert(serviceAccount),
projectId: "projecId",
...more config
}
firebase.initializeApp(config)
在serviceAccountKey.json中,我拥有从firebase获得的密钥,该密钥在account service选项卡中生成
添加凭据后仍会出现与上面相同的错误 您正在显示的代码调用以下命令:
firebase.initializeApp(config)
但我们不知道firebase是什么。我很确定这不是Firebase管理员SDK。我怀疑您应该使用exprss应用程序中用于查询数据库的Admin
变量初始化Admin SDK:
admin.initializeApp(config)
db
对象来自哪里?或者如何实例化firestore
模块?我也遇到了同样的问题,并找到了解决方案
admin.initializeApp(config)