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

Flutter Desktop(Windows)带认证通过REST API访问Firebase Storage方案咨询

在Flutter Desktop(Windows)通过REST API实现Firebase Storage认证访问

步骤1:通过Firebase Auth REST API获取用户ID令牌

由于googleapis_auth不支持邮箱密码直接登录Firebase用户,直接调用Firebase Auth的REST接口完成登录并获取ID Token:

  • 发送POST请求至 https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=YOUR_FIREBASE_WEB_API_KEY
  • 请求体(JSON格式):
{
  "email": "user@example.com",
  "password": "user_password",
  "returnSecureToken": true
}
  • 成功响应中会返回idToken,这是后续访问Storage所需的认证令牌

步骤2:携带ID Token访问Firebase Storage REST API

拿到idToken后,在请求Storage资源时,将其放入请求头的Authorization字段,格式为 Bearer {idToken}:

  • 示例:获取文件元数据
GET https://firebasestorage.googleapis.com/v0/b/YOUR_STORAGE_BUCKET/o/{encoded_file_path}
Authorization: Bearer YOUR_ID_TOKEN
  • 注意:文件路径需要做URL编码,比如images/test.jpg需转为images%2Ftest.jpg

步骤3:处理文件上传与下载

  • 上传文件:发送PUT请求至 https://firebasestorage.googleapis.com/v0/b/YOUR_STORAGE_BUCKET/o?name={encoded_file_path},请求头带上Authorization,请求体为文件二进制数据
  • 下载文件:在GET请求URL后追加&alt=media,同时携带Authorization头,即可获取文件二进制内容

额外注意事项

  • 确保Firebase Storage安全规则配置正确,允许认证用户访问目标资源,示例规则:
rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}
  • 替换YOUR_FIREBASE_WEB_API_KEY和YOUR_STORAGE_BUCKET为你项目的实际值
  • ID Token默认1小时过期,可通过响应中的expiresIn字段计算过期时间,提前触发刷新逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 21:12:04