Firebase云功能-使用Firebase功能测试功能时出现身份验证错误:shell

时间:2019-08-18 15:43:48

标签: firebase google-cloud-functions firebase-tools

我正在测试某些Firebase Cloud功能,当我使用firebase functions:shell在本地测试它们时,出现此错误:

@firebase/database: FIREBASE WARNING: {"code":"app/invalid-credential","message":"Credential implementation provided to 
initializeApp() via the \"credential\" property failed to fetch a valid
 Google OAuth2 access token with the following error: \"Error fetching
access token: Error while making request: getaddrinfo ENOTFOUND 
metadata.google.internal metadata.google.internal:80. Error code: 
ENOTFOUND\"."}

当我尝试访问该函数内部的admin.database()时,似乎会发生这种情况。

这些是我正在使用的npm模块:

"dependencies": {
    "firebase-admin": "^8.0.0",
    "firebase-functions": "^3.1.0",
  },

我这里缺少什么吗?我尝试卸载firebase-tools并通过npm i -g firebase-tools重新安装,但没有帮助。

我也在通过admin.initializeApp()

初始化应用程序

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。
如果您查看Admin Authentication API Errors,则会看到错误app/invalid-credential是由于以下原因引起的:

  

用于验证Admin SDK的凭据不能用于执行所需的操作。某些身份验证方法(例如createCustomToken()和verifyIdToken())要求使用证书凭证(而不是刷新令牌或应用程序默认凭证)来初始化SDK。请参阅初始化SDK,以获取有关如何使用证书凭据对Admin SDK进行身份验证的文档。

您需要手动指定您的凭据。

  

对服务帐户进行身份验证并授权其访问Firebase   服务,您必须生成JSON格式的私钥文件。

     

要为您的服务帐户生成私钥文件:

     
      
  1. 在Firebase控制台中,打开“设置”>“服务帐户”。
  2.   
  3. 单击“生成新私钥”,然后单击“生成密钥”进行确认。
  4.   
  5. 安全地存储包含密钥的JSON文件。
  6.   

我建议您按照Initialize the SDK部分中所述的说明进行操作。
这为我解决了这个问题。