除非我手动设置key.json

时间:2017-07-12 19:14:08

标签: node.js firebase google-cloud-functions firebase-admin

我正在尝试使用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 initgcloud 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

我已经生成了一个密钥文件。我尝试删除现有的并创建新的,唯一的解决方案是下载生成的密钥并手动导出环境变量

还有其他方法吗?

0 个答案:

没有答案