![](/img/trans.png)
[英]Firebase App Distribution "Your client does not have permission to get URL"
[英]Firebase cloud function "Your client does not have permission to get URL /200 from this server"
我刚刚做了一个firebase云功能:
exports.deleteAfterSevenDays = functions.https.onRequest((req, res) => {...
我部署了函数并获得了函数 URL。 当我从浏览器请求此 url 时,我收到以下消息:
“错误:禁止您的客户端无权从该服务器获取 URL /200。”
我刚刚更新到 firebase Blaze 计划,因为我认为 Spark 计划存在限制,但它仍然无法正常工作。
在我的 firebase 云函数日志中,写着“函数执行耗时 572 毫秒,以状态码完成:302”。
我的 cron 作业“由于执行失败太多而被自动禁用”。
你看到有什么问题吗?
云功能应该有一个名为“所有用户”的成员的角色,可以从任何地方/任何人调用此功能,而无需考虑授权。
未经授权:
经授权:
在云功能上设置授权始终是一个好习惯
注意:云函数抛出错误“403 Forbidden - Your client does not have permission to get URL”应由授权用户调用。
简单测试:
单击顶部的 Cloud shell(icon) 终端
类型 - gcloud auth print-identity-token
复制生成的令牌
形成调用云函数时要传递的授权密钥 4.1 授权:bearer generated_token
在调用您的云功能时使用上述授权密钥
笔记:
来自 Cloud Function 文档:
警告:使用低于 7.7.0 版本的任何 Firebase CLI 部署的新 HTTP 和 HTTP 可调用函数默认为私有,并在调用时引发 HTTP 403 错误。 要么明确公开这些函数,要么在部署任何新函数之前更新您的 Firebase CLI。
就我而言,CLI 版本已过时。 如果您当前收到 403 错误,请尝试以下操作:
npm install -g firebase-tools
要清楚:
https://console.cloud.google.com/functions/details/us-central1/ssr
allUsers
Cloud Functions Invoker
完毕。
Ĵ
如果您在 2020 年遇到这种情况,也可能是由于访问行为不同:
注意:自 2020 年 1 月 15 日起,HTTP 函数默认需要身份验证。 您可以指定函数是否允许在部署时或部署后进行未经身份验证的调用。
将目标云功能的 IAM 角色(Cloud Functions Invoker)更改为allUsers应该可以解决此问题。 https://console.cloud.google.com/functions
以下是步骤
这可能有点牵强,但是如果您中断了云功能部署,然后重新部署了该功能(这会导致错误),然后您成功地重新部署了该功能,这可能会导致问题。
我正在尝试重现,但简单地删除 firebase 控制台中的功能并重新部署对我有用。
gcloud auth print-identity-token
OAuth 2.0
注意:您可以对单个请求或文件夹执行相同的操作。
它发生在我升级所有 NPM 包然后部署之后......我从 cloude 中删除了所有功能并重新部署它们。 它立即解决了我这个错误。 未经更改许可或任何其他更改
我知道这没有意义,或者不是一个真正的解决方案,但我通过让我的帐户成为 Firebase 项目的Owner
来解决它。 当我是Editor
时它工作得很好,但突然停止工作并将我的帐户设置为Owner
现在解决了它。
我想这与某些帐户可以正确访问Service Account
有关,该帐户是 Firebase Functions 和 Google Cloud API 的实际接口。
就我而言,当我输入请求正文时,我在 Postman 中出错了,我没有将格式从 Text 切换为 JSON。
检查那部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.