我正在测试某些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()
答案 0 :(得分:0)
我遇到了同样的问题。
如果您查看Admin Authentication API Errors,则会看到错误app/invalid-credential
是由于以下原因引起的:
用于验证Admin SDK的凭据不能用于执行所需的操作。某些身份验证方法(例如createCustomToken()和verifyIdToken())要求使用证书凭证(而不是刷新令牌或应用程序默认凭证)来初始化SDK。请参阅初始化SDK,以获取有关如何使用证书凭据对Admin SDK进行身份验证的文档。
您需要手动指定您的凭据。
对服务帐户进行身份验证并授权其访问Firebase 服务,您必须生成JSON格式的私钥文件。
要为您的服务帐户生成私钥文件:
- 在Firebase控制台中,打开“设置”>“服务帐户”。
- 单击“生成新私钥”,然后单击“生成密钥”进行确认。
- 安全地存储包含密钥的JSON文件。
我建议您按照Initialize the SDK部分中所述的说明进行操作。
这为我解决了这个问题。