我正在尝试使用firebase serve --only functions
在本地运行云功能。如果我手动指定在我通过firebase控制台创建服务帐户时下载的key.json,它可以工作:https://console.firebase.google.com/project/project-id/settings/serviceaccounts/adminsdk。
然后做export GOOGLE_APPLICATION_CREDENTIALS=key.json
。为什么我要这样做?不应该firebase或gcloud正确处理这个吗?我认为functions.config().firebase
中的凭证是ApplicationDefault。 https://developers.google.com/identity/protocols/application-default-credentials。根据这个,首先检查上面的env变量,所以如果它在那里就可以工作。但是,#2#2不能正确验证我吗?
我有应用引擎的gcloud,所以我完成了gcloud init
和gcloud auth application-default login
。
我在index.js中初始化我的应用程序
const admin = require('firebase-admin');
const functions = require('firebase-functions');
admin.initializeApp(functions.config().firebase);
firebase serve --only functions
部署函数正常。但是当我执行一个使用此代码admin.auth().getUser(uid)...
的代码时,它会出现以下错误:
错误:发生内部错误。原始服务器响应:" {"错误":{"错误":[{"域":" usageLimits",&# 34;原因":" accessNotConfigured"," message":" Access Not Configured。 Google Identity Toolkit API尚未在项目7640 ... 50之前使用或被禁用。访问https://console.developers.google.com/apis/api/identitytoolkit.googleapis.com/overview?project=7640...50启用它,然后重试。如果您最近启用了此API,请等待几分钟,以便将操作传播到我们的系统并重试。"," extendedHelp":" https://console.developers.google.com/apis/api/identitytoolkit.googleapis.com/overview?project=7640...50"} ],"代码":403,"消息":"访问未配置。 Google Identity Toolkit API尚未在项目7640 ... 50之前使用或被禁用。访问https://console.developers.google.com/apis/api/identitytoolkit.googleapis.com/overview?project=7640...50启用它,然后重试。如果您最近启用了此API,请等待几分钟,以便将操作传播到我们的系统并重试。"}}
项目编号与console.cloud.google.com
中的firebase项目或项目ID /编号不对应没有gcloud,我收到此错误
错误:通过"凭证"提供给initializeApp()的凭证实施属性无法获取有效的Google OAuth2访问令牌,但出现以下错误:"获取访问令牌时出错:invalid_grant(令牌已过期或已撤消。)"。有两种可能的原因:(1)您的服务器时间未正确同步或(2)您的证书密钥文件已被撤销。要解决(1),请重新同步服务器上的时间。要解决(2),请确保密钥文件的密钥ID仍然存在于https://console.firebase.google.com/iam-admin/serviceaccounts/project。如果没有,请在https://console.firebase.google.com/project/_/settings/serviceaccounts/adminsdk
生成新的密钥文件
类似于https://github.com/urish/firebase-server/issues/81
我已经生成了一个密钥文件。我尝试删除现有的并创建新的,唯一的解决方案是下载生成的密钥并手动导出环境变量
还有其他方法吗?