繁体   English   中英

(firebase 函数)错误:禁止您的客户端无权获取 URL /

[英](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。

如果您有任何问题或仍然面临这个问题,请不要犹豫,回信。

已编辑* 导致此问题的原因可能有多种。

  1. 检查您的 function 端点 url 确保没有错字或空格
  2. 在 gcp 控制台中,确保您有权调用 function https://console.cloud.google.com/functions/list?project= <YOUR_PROJECT_ID>
  3. 如果上面两个都勾选了,删除你的 function 然后重新部署你的
  • 请查看允许未经身份验证的 function 调用

自 2020 年 1 月 15 日起,HTTP 函数默认需要身份验证。 您可以指定 function 是否允许在部署时或部署后进行未经身份验证的调用。

不幸的是,您不能在 Firebase 中执行此操作,您必须将 go 放入“托管”您的 firebase 项目的 Google Cloud 项目中。 你可以按照谷歌的这个指南,看看下面的截图:

在此处输入图像描述

您现在应该看到Allow unauthenticated

在此处输入图像描述

要允许对 function 进行未经身份验证的调用,请将特殊的 allUsers 成员 ID 添加到 function 并授予它 Cloud Functions Invoker 角色:

在此处输入图像描述

您可以在 function 中限制域访问,例如:

exports.myTest= async(req, res) => {
  res.set('Access-Control-Allow-Origin', 'foo.com');
  ...etc 

我在 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM