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

无法读取Firebase数据:无认证读取配置后仍无法拉取数据求助

解决 Firebase 无需认证读取数据失败的问题

我来帮你排查下这个困扰你的问题,你遇到的情况其实在 Firebase 开发中挺常见的,咱们一步步拆解分析:

1. 先确认规则是否真的生效并正确配置

Firebase 实时数据库的规则修改后,一定要点击控制台「规则」页面的发布按钮才算真正生效,有时候刚改完没发布,规则还是旧的。另外,你可以用控制台自带的「规则 Playground」快速验证:

  • 在 Playground 里选择「读取」操作,路径填 /users,用户身份选「未认证」,执行测试。如果测试失败,说明规则逻辑有问题;如果测试成功,那问题大概率出在代码或项目配置上。

另外,你之前尝试的两种规则逻辑本身都没问题:

  • { "rules": { ".read": "auth == null", ".write": "auth == null" } }:允许未认证用户读写数据
  • "rules": { ".read": "true", ".write": "auth != null" }:允许所有人读取,仅认证用户写入

2. 给代码加上错误处理,排查隐藏问题

你的代码片段看起来基本正确,但缺少错误处理分支,很多时候读取失败的原因会被隐藏。建议修改代码加上错误回调:

db = Database.database().reference()
db.child("users").observe(.value, with: { snapshot in
    print(snapshot)
}, withCancel: { error in
    print("读取数据出错:\(error.localizedDescription)")
})

这样如果有权限问题、路径错误或者网络问题,就能直接看到具体的错误信息,方便定位。

3. 确认几个基础细节

  • 检查 Firebase 配置:确保 GoogleService-Info.plist 已经正确添加到 Xcode 项目中,并且没有被误删或路径错误。
  • 确认数据存在:直接去 Firebase 控制台的实时数据库页面,查看 /users 节点下是否真的有数据。有时候我们会忽略这个最基础的点,空节点的话快照也会是空的。
  • 确认数据库类型:Firebase 有实时数据库和 Cloud Firestore 两种,你的代码是针对实时数据库的,如果你的数据存在 Cloud Firestore 里,这段代码肯定读不到数据,要区分清楚。

4. 排查网络和环境问题

  • 确保测试设备/模拟器能正常访问网络,Firebase 需要稳定的网络连接。
  • 如果是 iOS 14+,检查项目的 Info.plist 是否有 ATS 相关限制(不过现在 Firebase 都是 HTTPS 地址,一般不需要额外配置,但如果你的数据库是旧的 HTTP 地址可能需要添加例外)。另外,确认没有防火墙或代理阻止了 Firebase 的请求。

按照上面的步骤逐一排查,应该能很快找到问题所在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:26:02