【问题标题】:(firebase functions) Error: Forbidden Your client does not have permission to get URL /(firebase 函数)错误:禁止您的客户端无权获取 URL /
【发布时间】:2020-07-16 00:45:13
【问题描述】:

在 firebase 中调用已部署的函数时遇到问题。我在 firebase 项目中有一个编辑角色,当我部署函数时,调用它们没有任何问题。当我昨天部署一个新功能时,我收到了一条错误消息,上面写着

错误:禁止

您的客户端无权从该服务器获取 URL/

我的角色没有任何改变。奇怪的是,从昨天开始,无论我部署什么功能,都抛出了这些错误。

在 gcp 控制台/云函数中,您可以看到所选函数的权限,我注意到“云函数调用程序”未分配给该函数。我认为只要我有编辑器访问权限,默认情况下应该将它添加到任何功能中,但奇怪的是它不再添加它们。从昨天开始部署的其他功能也有同样的问题

任何建议或意见将不胜感激。谢谢

【问题讨论】:

标签: firebase google-cloud-functions


【解决方案1】:

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

【讨论】:

  • 感谢您的建议。您将如何指定“函数是否允许在部署时或部署后进行未经身份验证的调用”?想知道您使用什么命令行来配置这些设置。谢谢
  • 转到 Google Cloud Console:转到 Google Cloud Console console.cloud.google.com/functions/list 1. 单击要授予访问权限的函数旁边的复选框。 2. 单击右上角的显示信息面板以显示权限选项卡。 3. 单击添加成员。 4. 在新成员字段中,输入 allUsers。从选择角色下拉菜单中选择角色 Cloud Functions > Cloud Functions Invoker。点击保存。
  • 谢谢,但这是在部署配置之后。如果您是编辑,则无法在控制台窗口中更改或授予其他用户访问权限。正如您所提到的,“您可以指定一个函数是否允许在...部署时进行未经身份验证的调用”,想知道部署时的命令行是什么。谢谢
  • 就像你今天救了我的命一样。很多爱!
【解决方案2】:

这是来自 Firebase 团队的答案

您遇到的问题可能是因为在 2020 年 1 月 15 日之后,Google Cloud Functions 会自动将 HTTP 函数创建为>默认为私有。

请通过运行以下命令更新 CLI:

npm install -g firebase-tools

这将确保将来创建的 HTTP 函数可以公开访问。

最后,对于存在权限问题的现有函数,您需要>使用 Cloud Console 或 gcloud CLI 手动将函数设置为公开。

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

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

  1. 检查您的函数端点 url 确保没有错字或空格
  2. 在 gcp 控制台中,确保您有权调用函数 https://console.cloud.google.com/functions/list?project=
  3. 如果以上两项都勾选了,请删除你的函数并重新部署它们

【讨论】:

    【解决方案3】:

    很遗憾,您无法在 Firebase 中执行此操作,您必须进入“托管”您的 Firebase 项目的 Google Cloud 项目。您可以通过 Google 关注此guide,并查看以下屏幕截图:

    你现在应该看到Allow unauthenticated

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

      • Principals of type allUsers and allAuthenticatedUsers cannot be added to this resource
      【解决方案5】:

      在我的情况下更新 firebase-tools 还不够,因为我已经部署了该功能并且更新它并没有解决问题,我不得不删除它并再次部署

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-07
        • 2022-07-20
        • 1970-01-01
        • 2018-05-10
        • 2012-09-12
        • 1970-01-01
        • 1970-01-01
        • 2019-05-18
        相关资源
        最近更新 更多