我遇到了错误
“ W / SyncTree(31625):在/ address处监听失败:DatabaseError:权限被拒绝”
,同时使用匿名Firebase用户向Firebase发送请求,并且没有花哨的Firebase数据库规则:)。 ..我想找出导致此消息的原因。
编辑:错误与现有用户相同,这意味着用户登录似乎有效,但无法访问数据库。
我到目前为止所做的事情:
按以下方式创建登录名(例如来自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部分中)->在我看来,我已经登录了用户
实现类似Google示例(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
firebase ios app
与相同的Firebase数据库一起使用我需要什么:
我需要一些提示,以了解该初始化代码或用户登录名是否存在任何问题
答案 0 :(得分:3)
在FirebaseApp.configure(
FirebaseDatabase.instance.reference().child(...)
将使用google-services.json