Firebase App Check全请求未验证:用最新SDK仍无法启用强制模式
Firebase App Check 显示「Unverified: outdated client requests」问题排查(已使用v9.15.0最新SDK)
问题详情
在Firebase部署的应用中,App Check控制台所有请求均标记为「Unverified: outdated client requests」,系统提示需更新Firebase SDK,但本地已使用最新的firebase 9.15.0版本。初始化代码如下:
import { initializeApp } from "firebase/app"; import { initializeAppCheck, ReCaptchaV3Provider } from "firebase/app-check"; const firebaseConfig = { apiKey: "...", authDomain: "...", projectId: "...", storageBucket: "...", messagingSenderId: "...", appId: "...", measurementId: "...", }; // Initialize Firebase const app = initializeApp(firebaseConfig); const appCheck = initializeAppCheck(app, { provider: new ReCaptchaV3Provider("KEY"), isTokenAutoRefreshEnabled: true, });
可能的原因及解决办法
App Check 初始化顺序错误
必须确保initializeAppCheck在所有其他Firebase服务(如Firestore、Storage、Auth)的初始化代码之前执行。如果其他服务先初始化,它们的早期请求不会携带App Check令牌,会被判定为过时请求。调整代码顺序,把App Check初始化放在最前面(紧跟initializeApp之后)。ReCaptcha V3 密钥配置不匹配
- 确认使用的ReCaptcha V3密钥是Web平台专用的,而非Android/iOS密钥;
- 在Firebase控制台的App Check设置中,已正确将该密钥与当前应用关联;
- 登录Google ReCaptcha控制台,检查应用的域名是否已添加到允许列表中,未添加的域名会导致ReCaptcha验证失败,进而无法生成有效的App Check令牌。
部署代码未同步本地更新
本地代码使用v9.15.0,但部署到服务器的代码可能还是旧版本。可以通过以下方式验证:- 打开浏览器开发者工具的Network面板,查看请求的
X-Firebase-AppCheck头是否存在; - 检查打包后的JS文件,搜索
firebase/app-check的版本信息,确认实际部署的版本。
- 打开浏览器开发者工具的Network面板,查看请求的
自定义请求未手动附加令牌
如果你的应用中有自定义HTTP请求调用Firebase REST API(而非使用官方客户端SDK),需要手动获取并附加App Check令牌:import { getToken } from "firebase/app-check"; // 获取令牌 const token = await getToken(appCheck, /* forceRefresh */ false); // 在请求头中添加 fetch("https://your-firebase-endpoint", { headers: { "X-Firebase-AppCheck": token, }, });浏览器缓存残留旧代码
用户浏览器可能缓存了旧版本的SDK资源。解决方式:- 部署时为打包后的静态文件添加哈希后缀(如
app.[hash].js),强制浏览器加载新文件; - 指导用户强制刷新浏览器(Ctrl+F5)清除缓存。
- 部署时为打包后的静态文件添加哈希后缀(如
SDK小版本兼容性问题
尽管v9.15.0是当时的最新版,仍可能存在特定场景下的兼容问题。尝试升级到Firebase v9系列的最新小版本,或回退到前一个稳定版本(如v9.14.0)测试是否解决问题。
内容的提问来源于stack exchange,提问作者lowzyyy
相关产品推荐
相关产品推荐

