【发布时间】:2019-02-11 16:26:46
【问题描述】:
我有错误
'W/SyncTree(31625): Listen at /address failed: DatabaseError: Permission denied'
同时使用匿名 firebase 用户向 firebase 发送请求,并且没有花哨的 firebase 数据库规则 :) 。 ..我想找出导致此消息的原因。
编辑:错误与现有用户相同,表示用户登录似乎可以工作,但无法访问数据库。
到目前为止我做了什么:
- 设置 firebase(包括在 pubspec.yaml 中添加 google_service.json 和依赖项) - 目前有效
-
如下创建登录(例如来自 google link):
Future<String> _testSignInAnonymously() async { final FirebaseUser user = await _auth.signInAnonymously(); assert(user != null); assert(user.isAnonymous); assert(!user.isEmailVerified); assert(await user.getIdToken() != null); assert(user.providerData.length == 1); assert(user.providerData[0].providerId == 'firebase'); assert(user.providerData[0].uid != null); assert(user.providerData[0].displayName != null); assert(user.providerData[0].photoUrl == null); assert(user.providerData[0].email != null); final FirebaseUser currentUser = await _auth.currentUser(); print(currentUser.uid); print(currentUser.isAnonymous); assert(user.uid == currentUser.uid); return 'signInAnonymously succeeded: $user'; } print 语句提供了一个 userId(这个 id 也在 firebase auth 部分)--> 在我看来,我有一个登录用户
-
像谷歌示例 (link) 中那样实现初始化:
Future<void> main() async { final FirebaseApp app = await FirebaseApp.configure( name: 'mydbName', options: const FirebaseOptions( googleAppID: 'myAppId', apiKey: 'myApiKey', databaseURL: 'myUrl', ), ); runApp(new MyApp(app)); } -
在另一个处于状态的有状态小部件上,我尝试请求一些 firebase 数据:
void initState() { final FirebaseDatabase database = new FirebaseDatabase(app: widget.app); database.reference().child('address').once().then((DataSnapshot snapshot) { print('Connected to database and read ${snapshot.value}'); }); super.initState(); } -
我已经删除了 firebase 中的所有规则,除了:
".read": "auth != null", ".write": "auth != null", 我在
firebase android app中使用 SHA-1 证书/指纹- 在使用匿名用户时,我使用带有
firebase ios app的相同 firebase 数据库没有任何问题
我需要什么:
我需要一些提示如何找出初始化代码或用户登录或其他问题是否有问题
【问题讨论】:
-
您还下载了 google-services.json 到
android/app/google-services.json? -
@GünterZöchbauer 是的,我愿意
-
您是将规则推送到此数据库
name: 'mydbName',还是仅推送到默认数据库? -
@GünterZöchbauer 我将规则推送到我的数据库
https://mydbName.firebaseio.com/。我希望这些规则同时用于这个数据库相关的应用程序(ios 和 android)?!我的 ios 应用程序可以使用它 -
您是否在控制台中检查了指定数据库中的规则?规则是每个数据库的。你检查过firebase控制台中的模拟器吗?相同的规则适用于 iOS 和 Android,但不适用于
mydbName和默认数据库。
标签: android firebase firebase-realtime-database firebase-authentication flutter