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

Flutter中StorageException报错如何修复?创建账号遇Firebase权限问题

Firebase Storage 403权限错误(App Attestation Failed)原因及解决办法

错误日志

W/StorageUtil(22184): Error getting App Check token; using placeholder token instead. Error: com.google.firebase.FirebaseException: Error returned from API. code: 403 body: App attestation failed.
W/NetworkRequest(22184): no auth token for request
E/StorageException(22184): StorageException has occurred.
E/StorageException(22184): User does not have permission to access this object.
E/StorageException(22184):  Code: -13021 HttpResult: 403
E/StorageException(22184): The server has terminated the upload session

问题原因

  • App Check验证失败:核心原因是Firebase App Check的应用认证未通过,导致无法获取有效访问令牌,请求被服务端拒绝。
  • 缺少合法认证令牌:App Check验证失败直接导致请求未携带有效令牌,Storage服务无法识别请求的合法性。
  • Storage安全规则限制:即使App Check正常工作,如果Storage的安全规则未授权当前请求(比如未认证用户访问需要权限的资源),也会返回403错误。

解决步骤

  1. 修复App Check配置

    • 确认Firebase控制台已启用App Check,并为你的平台(Android/iOS/Web)配置了对应验证提供者(Android用Play Integrity、iOS用App Attest、Web用ReCAPTCHA)。
    • 检查应用内App Check SDK集成代码,确保初始化正确。例如Android端需在Application类中添加:
      FirebaseAppCheck.getInstance().installAppCheckProviderFactory(
          AppCheckProviderFactory.installPlayIntegrityProviderFactory()
      );
      
    • 核对Firebase控制台中配置的应用签名指纹与本地应用签名是否一致,Play Integrity依赖正确的签名信息才能完成验证。
  2. 调整Storage安全规则

    • 临时测试验证:先将规则改为允许所有访问(仅用于排查问题,上线前必须修改为严格规则):
      rules_version = '2';
      service firebase.storage {
        match /b/{bucket}/o {
          match /{allPaths=**} {
            allow read, write: if true;
          }
        }
      }
      
    • 适配业务需求修改规则:如果测试通过,说明规则是问题所在,根据实际场景调整,比如允许认证用户访问:
      rules_version = '2';
      service firebase.storage {
        match /b/{bucket}/o {
          match /{allPaths=**} {
            allow read, write: if request.auth != null;
          }
        }
      }
      
    • 结合App Check验证:如果依赖App Check做应用级验证,可在规则中添加:
      allow read, write: if request.app != null;
      
  3. 确认用户认证状态

    • 若Storage规则要求用户认证,需确保在访问Storage前,用户已完成Firebase认证流程(如signInWithEmailAndPassword),且认证状态处于有效状态。
  4. 排查网络与测试环境

    • 确保测试设备可正常访问Firebase服务,无防火墙或代理拦截请求。
    • 部分App Check提供者(如Play Integrity)在模拟器上无法正常工作,建议使用真实物理设备进行测试。

内容的提问来源于stack exchange,提问作者Muhammad Ibrahim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 11:33:10