Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何避免;401“未经授权”;在GCP组织下调用Firebase可调用HTTP函数时?_Firebase_Google Cloud Platform_Google Cloud Functions - Fatal编程技术网

如何避免;401“未经授权”;在GCP组织下调用Firebase可调用HTTP函数时?

如何避免;401“未经授权”;在GCP组织下调用Firebase可调用HTTP函数时?,firebase,google-cloud-platform,google-cloud-functions,Firebase,Google Cloud Platform,Google Cloud Functions,我在GCP组织下有一个Firebase项目。我有NodeJS 10个可调用函数,它们可以与Firebase本地emulator和GCP函数测试页面一起正常工作,但是当试图在生产中使用webapp中的HttpScalable调用它们时,我得到了401个未经授权的权限-您的客户端没有访问请求URL的权限 在我的测试函数中几乎没有任何内容—它只返回一个硬编码字符串。呼叫尝试后,日志中没有任何内容 函数调用尝试是在webapp中通过Firebase身份验证后完成的,在开发过程中,我看到用户确实被传递到了

我在GCP组织下有一个Firebase项目。我有NodeJS 10个可调用函数,它们可以与Firebase本地emulator和GCP函数测试页面一起正常工作,但是当试图在生产中使用webapp中的HttpScalable调用它们时,我得到了401个未经授权的权限-您的客户端没有访问请求URL的权限

在我的测试函数中几乎没有任何内容—它只返回一个硬编码字符串。呼叫尝试后,日志中没有任何内容

函数调用尝试是在webapp中通过Firebase身份验证后完成的,在开发过程中,我看到用户确实被传递到了上下文参数

我使用Firebase Tools 8.0.2进行部署

在GCP控制台功能详细信息中,我看到了“入口设置-允许所有流量”,正如我在上面所写的,它从那里的测试选项卡成功运行

我试图公开该函数,但无法在控制台或gcloud中设置权限。当我尝试使用gcloud运行以下命令时:

gcloud functions add-iam-policy-binding my-function-name \
 --member="allUsers" \
 --role="roles/cloudfunctions.invoker"
我得到:

ERROR: (gcloud.functions.add-iam-policy-binding) ResponseError: status=[403], code=[Forbidden], message=[Permission 'cloudfunctions.functions.setIamPolicy' denied on resource 'projects/my-project-name/locations/us-central1/functions/my-function-name' (or resource may not exist).]
尽管我的帐户具有以下角色:项目所有者、云功能管理员、安全管理员、IAP策略管理员、组织管理员


任何指导都将不胜感激。

根据John的指示,原来gcloud被设置为不正确的活动帐户,因此我使用
gcloud config set my account将其设置为具有所需权限的正确帐户-email@my-domain.com
,然后我可以使用

gcloud functions add-iam-policy-binding my-function-name \
 --member="allUsers" \
 --role="roles/cloudfunctions.invoker"

按照John的指示,原来gcloud设置为不正确的活动帐户,因此我使用
gcloud config set my account将其设置为具有所需权限的正确帐户-email@my-domain.com
,然后我可以使用

gcloud functions add-iam-policy-binding my-function-name \
 --member="allUsers" \
 --role="roles/cloudfunctions.invoker"

错误消息表示CLI使用的凭据没有权限。仔细检查帐户:
gcloud auth list
、您的项目
gcloud config list
以及分配给您的帐户的角色
gcloud projects get iam policy project\u ID
。确实,gcloud活动帐户不正确,将其设置为正确的帐户允许我设置iam以公开功能。谢谢你,约翰。我不明白的是,如果在通过Firebase身份验证后调用该函数,为什么需要这样做。我还尝试设置allAuthenticatedUsers而不是allUsers,但仍然得到相同的错误。我是否混淆了两种类型的用户?发布一个答案,显示原始问题的解决方案(包括确定解决方案的步骤)。然后为新问题创建一个新问题。尽量不要将评论部分用作其他问题的聊天室。错误消息表示CLI使用的凭据没有权限。仔细检查帐户:
gcloud auth list
、您的项目
gcloud config list
以及分配给您的帐户的角色
gcloud projects get iam policy project\u ID
。确实,gcloud活动帐户不正确,将其设置为正确的帐户允许我设置iam以公开功能。谢谢你,约翰。我不明白的是,如果在通过Firebase身份验证后调用该函数,为什么需要这样做。我还尝试设置allAuthenticatedUsers而不是allUsers,但仍然得到相同的错误。我是否混淆了两种类型的用户?发布一个答案,显示原始问题的解决方案(包括确定解决方案的步骤)。然后为新问题创建一个新问题。尽量不要将评论部分用作其他问题的聊天。