![](/img/trans.png)
[英]getting error : Your client does not have permission to get URL in firebase functions
[英](firebase functions) Error: Forbidden Your client does not have permission to get URL /
我在调用 firebase 中部署的 function 时遇到问题。 我在 firebase 项目中担任编辑角色,当我部署函数时,调用它们没有任何问题。 当我昨天部署一个新的 function 时,我收到错误消息说
错误:禁止
您的客户端无权从此服务器获取 URL / < Function 名称 >。
我的角色没有任何改变。 奇怪的是,从昨天开始,无论我部署什么 function,都会抛出这些错误。
在 gcp 控制台/云功能中,您可以看到选择的 function 的权限,我注意到“云功能调用程序”未分配给该 function。 我认为这应该默认添加到任何 function 中,只要我有编辑器访问权限,但奇怪的是它不再添加它们。 从昨天开始部署的其他功能也有同样的问题
任何建议或意见将不胜感激。 谢谢
这是firebase团队的答案
您遇到的问题可能是由于在 2020 年 1 月 15 日之后,Google Cloud Functions 自动创建 HTTP 函数默认为 >private。
请通过运行以下命令更新 CLI:
npm install -g firebase-tools
这将确保将来创建的 HTTP 函数可以公开访问。
最后,对于存在权限问题的现有功能,您需要使用 Cloud Console 或 gcloud CLI 手动将 function 设置为 public。
如果您有任何问题或仍然面临这个问题,请不要犹豫,回信。
已编辑* 导致此问题的原因可能有多种。
自 2020 年 1 月 15 日起,HTTP 函数默认需要身份验证。 您可以指定 function 是否允许在部署时或部署后进行未经身份验证的调用。
不幸的是,您不能在 Firebase 中执行此操作,您必须将 go 放入“托管”您的 firebase 项目的 Google Cloud 项目中。 你可以按照谷歌的这个指南,看看下面的截图:
Allow unauthenticated
我在 typescript/JS 中定义了我的 Firebase 云函数,并使用 Firebase CLI 进行部署。 我在自定义部署设置后遇到了这个错误,我通过指定invoker="public"
来修复它——我不需要深入研究 IAM 设置或使用控制台或 CLI 来修复。
export const serve = functions
.region("us-west2")
.runWith({
invoker: "public", // this is the magic line
})
.https.onRequest(
async (request: functions.Request, response: functions.Response) => {
// ...
})
在我的情况下更新 firebase-tools 还不够,因为我已经部署了 function 并更新它并没有解决问题,我不得不删除它并再次部署
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.