向Firebase Firestore模拟器写入数据时出现INVALID_REFRESH_TOKEN错误如何解决
错误产生原因
该错误属于Firebase身份认证环节校验刷新令牌失败,结合Firestore模拟器的使用场景,常见触发原因如下:
- 本地缓存了生产环境令牌冲突:之前使用过同项目生产环境Firebase服务,本地留存的生产环境刷新令牌与模拟器环境的鉴权规则不兼容
- 模拟器依赖服务未完整启动:仅启动了Firestore模拟器,未同步启动Auth身份认证模拟器,SDK默认请求生产环境鉴权接口校验令牌失败
- SDK连接配置错误:未在代码中显式指定Auth模拟器地址,SDK仍然向生产环境请求鉴权令牌,返回的令牌无法在模拟器环境通过校验
- 端口配置不匹配:Auth模拟器启动端口和代码中指定的模拟器端口不一致,请求到错误的鉴权端点
排查修复方案
- 检查模拟器启动参数:启动模拟器时确保同步启动Auth和Firestore模块,启动命令补充
--only auth,firestore,启动后确认控制台显示两个模块对应的端口与配置无冲突 - 校验SDK模拟器配置:在初始化Firebase实例前,先显式指定两个模块的模拟器地址,配置示例如下:
前端JS示例:
安卓示例:firebase.auth().useEmulator("http://localhost:9099"); firebase.firestore().useEmulator("localhost", 8080);
注意必须先配置模拟器地址,再执行登录、数据读写等操作firebaseAuth.useEmulator("10.0.2.2", 9099) firebaseFirestore.useEmulator("10.0.2.2", 8080) - 清理本地缓存的身份令牌:前端清理浏览器本地存储中
firebase:authUser:开头的缓存数据,移动端卸载重装测试应用清除本地所有Firebase相关缓存 - 使用模拟器环境生成测试身份:访问
localhost:4000进入模拟器控制台,在Auth模块创建测试用户,使用该测试用户在模拟器环境登录后再执行Firestore写入操作,禁止复用生产环境的登录态 - 隔离开发环境配置:测试环境使用独立的Firebase配置项,不要和生产环境的apiKey、项目ID等配置混用
内容的提问来源于stack exchange,提问作者Prince
相关产品推荐
相关产品推荐

