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

如何获取Firebase Hosting历史版本并解决API调用403认证问题

方案一:部署前预定义版本号(最推荐)

这个方案可以彻底解决旧页面版本显示错误的问题,操作也最简单:

  • 你要的类似e925c5的版本号可以直接取Git提交的短哈希,部署前执行脚本把这个哈希写入你的前端代码的固定位置,比如写入全局变量window.APP_VERSION = 'e925c5',或者直接插入到页面展示版本的DOM节点里
  • 你也可以通过Firebase CLI的部署参数自定义版本标识,部署时加--message参数,比如firebase deploy --message "e925c5",这个标识会出现在Firebase控制台的部署历史里
  • 因为版本号是直接打包到对应版本的静态资源里的,每个旧版本的页面自带的就是自己对应的版本号,完全不会出现旧页面展示最新版本号的问题

方案二:正确调用Firebase Hosting Rest API获取历史版本

你之前返回403是身份验证环节的用法错误,修复方式如下:

  1. 首先你调用的getGlobalDefaultAccount.getAccessToken()是异步方法,你没有等待它返回有效令牌就直接传入了requireAuth,导致传入的是pending状态的Promise而非有效令牌
  2. 使用的权限scope不对,不需要cloud-platform这么大的权限,换成https://www.googleapis.com/auth/firebasehosting即可
  3. 更稳定的用法是直接用Google官方的认证库,而非调用firebase-tools的内部私有方法,内部方法随时可能在版本更新后失效

如果你只需要本地跑脚本拉取版本列表,可以直接用gcloud CLI生成有效令牌后请求接口:

# 先登录gcloud
gcloud auth application-default login
# 生成令牌
TOKEN=$(gcloud auth application-default print-access-token)
# 请求版本列表接口
curl -H "Authorization: Bearer $TOKEN" "https://firebasehosting.googleapis.com/v1beta1/sites/sarafe-testing/releases"

补充说明

如果走API拉取的方案,要解决旧页面版本匹配问题,可以在页面加载时读取当前静态资源的ETag或者Last-Modified响应头,和接口返回的版本历史中的对应字段做匹配,就能拿到当前页面所属的版本号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 06:36:04