You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为GCP服务账号配置Firebase Storage读取访问权限

问题场景

调用Google Cloud Vision的Vision API Product Search功能读取Firebase Storage内存储的图片时,返回以下报错:

"message": "Error opening file: gs://swaepone.appspot.com/bag.jpeg."
可按以下步骤为对应服务账号配置Firebase Storage读取权限:

操作步骤
  • 先确认实际调用API的服务账号身份
    不要直接给默认服务账号配权限,先找对主体:可以从你调用API时用的服务账号密钥文件里的client_email字段、Cloud Console的Vision API调用日志里拿到发起请求的服务账号完整邮箱,格式一般是[自定义名称]@[项目ID].iam.gserviceaccount.com。
    注意:Vision API不会自动用Firebase默认服务账号访问资源,必须匹配你发起请求时携带凭证对应的服务账号,配错主体权限不会生效
  • 为服务账号配置存储桶读取权限,二选一即可:
    • 方式1:IAM角色授权(适合存储桶开启统一IAM访问控制的场景)
      进入Google Cloud Console的Cloud Storage存储桶列表,找到报错对应的swaepone.appspot.com存储桶,打开「权限」页点击「授予访问权限」,主体填入刚才找到的服务账号邮箱,角色选择Storage 对象查看者,如果是旧版Firebase存储桶也可以选Storage 旧版存储桶读取者,保存后等待权限传播即可。
    • 方式2:Firebase Storage安全规则授权(适合存储桶用Firebase原生规则管控的场景)
      打开Firebase控制台对应项目的Storage板块,进入「规则」页,补充允许该服务账号读取资源的规则,示例配置:
      rules_version = '2';
      service firebase.storage {
        match /b/{bucket}/o {
          match /{allPaths=**} {
            allow read: if request.auth.token.email == "填入你找到的服务账号邮箱";
          }
        }
      }
      
      发布规则后等待1-2分钟生效即可。
  • 配置后校验
    如果配置完还是报错,先排查三个点:
    • 确认gs://swaepone.appspot.com/bag.jpeg路径下的文件真实存在,没有大小写、后缀拼写错误
    • 确认没有配置VPC Service Controls、组织策略拦截该服务账号访问存储桶
    • 刚配完权限等2分钟再重试,IAM和安全规则配置都有短时间的传播延迟

内容的提问来源于stack exchange,提问作者Flutter Dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 20:12:15