Node.js 尝试获取集合时发生Firebase凭据错误

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

我正在将节点与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记录在控制台上,似乎没有问题。 我将解码的声音记录在控制台日志中,得到以下信息:

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)