我刚刚创建了一个firebase云功能:
exports.deleteAfterSevenDays = functions.https.onRequest((req, res) => {...
我部署了该函数并获得了一个函数URL。当我从浏览器请求此URL时,我收到以下消息:
"错误:禁止您的客户端无权获取URL / 200 来自这个服务器。"
我刚刚更新了firebase Blaze计划,因为我认为Spark计划有局限性,但它仍然无效。
在我的firebase云功能日志中写入"功能执行耗时572 ms,完成状态代码:302"。
我的cron作业"由于执行失败次数太多而被自动禁用"。
你看到了什么错了吗?
谢谢,
亚历
答案 0 :(得分:22)
来自Cloud Function文档:
警告:新的HTTP和HTTP可调用函数随任何其他对象一起部署 低于版本7.7.0的Firebase CLI在默认情况下为私有,并抛出 调用时出现HTTP 403错误。明确地执行这些功能 公开,或在部署任何新版本之前更新Firebase CLI 功能。
就我而言,CLI版本已过时。如果当前收到403错误,请尝试以下操作:
Source
答案 1 :(得分:4)
如果您在2020年遇到这个问题,也可能是由于不同的访问行为造成的:
注意:自2020年1月15日起,HTTP功能需要通过以下方式进行身份验证: 默认。您可以指定函数是否允许未经身份验证 部署时或部署后调用。
答案 2 :(得分:3)
Cloud函数应该具有一个名为“所有用户”的成员的角色,以便无论授权如何,都可以在任何地方/任何地方调用此函数。
未经授权:
获得授权:
在云功能上设置授权始终是一个好习惯
注意:授权用户应调用“ 403禁止-您的客户端无权获取URL”引发的云函数错误。
简单测试:
单击顶部的Cloud shell(图标)终端
类型-gcloud auth打印身份令牌
复制生成的令牌
形成调用云函数时要传递的授权密钥 4.1授权:bearer generate_token
在调用您的云函数时使用上面的授权密钥
注意:
答案 3 :(得分:0)
将目标云功能的IAM角色(云功能调用程序)更改为 allUsers 应该可以解决此问题。 https://console.cloud.google.com/functions
答案 4 :(得分:0)
我知道这没有意义,或者不是一个真正的解决方案,但是我通过使我的帐户成为Firebase项目的Owner
来解决了这个问题。我Editor
时工作正常,但突然停止工作并将我的帐户设置为Owner
即可解决此问题。
我想这与某些帐户具有对Service Account
的正确访问有关,<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
是Firebase Functions和Google Cloud API的实际接口。
答案 5 :(得分:0)
就我而言,我在 Postman 中犯了错误 当我输入请求正文时,我没有将格式从文本切换到 JSON。
检查那个部分。