如何配置Firebase Functions执行权限,支持链接直接调用无需谷歌账号?
如何让Firebase HTTPS函数允许公开访问(无需谷歌登录)
你遇到的问题是因为Firebase默认给HTTPS函数设置了需要身份验证的权限,所以浏览器会要求你登录谷歌账号才能访问。要让它能直接通过<a>标签调用,你需要把函数的权限调整为允许所有用户访问,下面是两种具体的实现方法:
方法一:使用Firebase CLI快速设置
如果你已经安装了Firebase CLI,直接在项目根目录运行以下命令:
firebase functions:setAllUsers downloadSuppliersHttps --region us-central1 --allow
downloadSuppliersHttps是你要修改权限的函数名,要和你代码里导出的函数名完全一致us-central1是你的函数部署的区域,和你访问链接里的区域保持一致--allow参数表示允许所有用户调用这个函数
方法二:通过Google Cloud Console手动配置
如果你更喜欢可视化操作,可以按以下步骤来:
- 打开Google Cloud Console并进入你的项目
- 在左侧导航栏找到「Cloud Functions」,进入函数列表
- 找到你的
downloadSuppliersHttps函数,点击进入详情页 - 切换到「权限」标签页,点击页面上方的「添加」按钮
- 在「新主体」输入框中填写
allUsers,然后在「角色」下拉菜单里选择「Cloud Functions > Cloud Functions Invoker」 - 点击「保存」完成配置
额外注意事项
- 检查你的函数代码:你提供的TypeScript代码里没有额外的鉴权逻辑,这很好,不需要修改。如果后续添加了身份验证相关代码,记得按需调整,避免和公开权限冲突。
- 批量/默认权限配置:如果希望后续部署的函数默认都是公开的,可以在项目根目录的
firebase.json里添加配置:
这个配置会让新部署的HTTPS函数默认允许所有用户访问,不过已有的函数还是需要用前面的方法单独修改权限。"functions": { "source": "functions", "predeploy": ["npm --prefix \"$RESOURCE_DIR\" run build"], "httpsOptions": { "invoker": "public" } }
设置完成后,你再访问函数链接或者用<a href="https://us-central1-my-project-prod.cloudfunctions.net/downloadSuppliersHttps">下载供应商CSV</a>这样的标签,就不会再要求登录谷歌账号了,直接就能触发下载。
内容的提问来源于stack exchange,提问作者Martin Andersen
相关产品推荐
相关产品推荐

