Firebase Realtime Database拉取数据报错Client is offline问题求助
Firebase Realtime Database拉取数据离线报错解决方案
你遇到的java.lang.Exception: Client is offline报错是Firebase Realtime Database客户端未成功连接到远端服务,调用get()方法时无法拉取云端数据导致的,可按以下顺序排查:
- 基础网络状态排查
检查设备网络是否正常,是否开启了代理、VPN等可能阻断Firebase连接的工具,部分地区网络环境本身无法直连Firebase服务,可先测试网络连通性。 - 业务逻辑校验
确认代码中uid变量已经正确赋值,不是空值或者非法值,避免指向不存在的数据库节点触发异常。 - Firebase基础配置校验
- 确认项目根目录是否正确放置了
google-services.json文件,且该文件是从当前使用的Firebase项目控制台下载的,包名、项目ID完全匹配 - 检查App module的
build.gradle中是否正确引入了Firebase Realtime Database依赖,版本和其他Firebase依赖版本保持一致,避免版本兼容冲突
- 确认项目根目录是否正确放置了
- Realtime Database专属配置排查
- 确认Firebase控制台中实时数据库的安全规则是否允许当前用户读取数据,若配置了鉴权规则需确保当前用户已完成登录,测试阶段可以临时将规则改为如下内容验证:
注意生产环境必须替换为符合业务逻辑的安全规则,避免数据泄露。{ "rules": { ".read": true, ".write": true } }
2. 检查初始化Database实例时是否正确填写了数据库位置,如果你选择的不是默认的美国区数据库,需要在getInstance()方法中传入数据库完整URL,示例如下:
数据库URL可以在Firebase控制台的实时数据库页面顶部获取。database = FirebaseDatabase.getInstance("你的实时数据库完整URL").getReference("users") - SDK离线缓存配置排查
如果你之前手动开启了Firebase Database的持久化缓存,且长时间未联网,可能导致本地缓存优先触发离线错误,可尝试在初始化时调整缓存策略,或先调用goOnline()方法强制触发重连:FirebaseDatabase.getInstance().goOnline()
内容的提问来源于stack exchange,提问作者Phearum
相关产品推荐
相关产品推荐

