Firebase实时数据库读取遇权限错误及区域不匹配问题
解决Firebase Realtime Database数据读取异常问题
核心问题分析
你遇到的两个错误中,数据库区域不匹配是导致连接失败的根本原因,权限提示大概率是连接中断后的误报——服务器强制断开连接,是因为代码使用的默认数据库URL和实际数据库所在区域不一致。
分步解决方案
1. 修正数据库URL配置
根据错误提示,你的数据库位于europe-west1区域,需要在代码中明确指定正确的数据库URL:
// 替换为错误提示中的实际数据库URL final ref = FirebaseDatabase.instanceFor( databaseURL: "https://xxxx-rtdb.europe-west1.firebasedatabase.app" ).ref(); final snapshot = await ref.child('data').get(); if (snapshot.exists) { print(snapshot.value); } else { print('No data available.'); }
同时检查google-services.json文件中的firebase_url字段,确认其值与上述URL一致,若不一致则替换为正确URL并重新同步到项目中。
2. 确认安全规则已生效
虽然你设置了开放读写权限,仍需确保规则已在Firebase控制台发布:
- 登录Firebase控制台,进入Realtime Database页面
- 切换到「规则」标签页,确认规则内容为:
{ "rules": { ".read": true, ".write": true } } - 点击「发布」按钮,确保规则生效(若之前未发布,规则仍为默认的受限状态)
3. 重新测试读取功能
完成上述配置后,重新运行项目,此时数据库连接会正常建立,权限规则也会正确应用,即可读取data节点下的数据。
内容的提问来源于stack exchange,提问作者blacky99
相关产品推荐
相关产品推荐

