android - Flutter - 如何在 Firebase 中写入数据(实时 ddb): permission denied

标签 android firebase firebase-realtime-database dart flutter

我想在 Firebase 中写入数据,但出现权限错误,这是我尝试过的:

void initState() {
    super.initState();
    testFirebase();
 }

 Future testFirebase() async {

    initUser();

    //Initialize Firebase
    final FirebaseApp firebaseApp = await FirebaseApp.configure( ... );

    final FirebaseDatabase database = new FirebaseDatabase(app: firebaseApp);

    database.reference().child('counter').push().set(<String, String>{
      'var': 'test'
    });
  }

  Future initUser() async {
    googleUser = await _ensureLoggedInOnStartUp();
    if (googleUser == null) {
       setState(() {
         state.isLoading = false;
       });
    } else {
       var firebaseUser = await logIntoFirebase();
    }
  }

这是我的 Firebase 规则:

enter image description here

google-services.json 文件添加到应用根目录:

enter image description here

结果:

我收到以下错误消息:

enter image description here

我也尝试过:

push().setValue('2')

但它不起作用,这让我发疯,我不明白......

有什么想法吗?

最佳答案

快速初步检查是您需要await initUser()。所以:

Future testFirebase() async {

    await initUser();

    //Initialize Firebase
    final FirebaseApp firebaseApp = await FirebaseApp.configure( ... );

如果没有它,我希望在身份验证完成之前开始调用数据库。


更新:我刚刚用这个简单的代码验证了情况确实如此:

void _signin() async {
  print("Calling __actuallySignin");
  __actuallySignin();
  print("called __actuallySignin and waited");
}
void __actuallySignin() async {
  print("Calling signIn...");
  await FirebaseAuth.instance.signInAnonymously();
  print("called signIn... and waited");
}

这打印:

flutter: Calling __actuallySignin
flutter: called __actuallySignin and waited
flutter: Calling signIn...
...
flutter: called signIn... and waited

因此 __actuallySignin 方法在登录完成之前完成。要使调用代码等待您添加 await 的结果:

await __actuallySignin();

哪些输出:

flutter: Calling __actuallySignin
flutter: Calling signIn...
flutter: called signIn... and waited
flutter: called __actuallySignin and waited

关于android - Flutter - 如何在 Firebase 中写入数据(实时 ddb): permission denied,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52210694/

相关文章:

java - 获取 jsonarray 键名

android - 如何为您的 android 设置找到 ndk 修订号

javascript - 使用 firebase 隐藏第三方 API key

java - 如何识别随机ID并将其称为 child ?

java - 如何获取 firebase 数据库 android 中特定值的 child 数量?

php - 根据另一个表中的值从一个表中选择值

java - 如何让 myfirstapp 在 android studio 上运行?

javascript - Firebase 函数将日期时间存储为 map

firebase - Firestore 读/写定价; .limit(25) 算作 25 次读取还是 1 次?

json - 有没有办法阻止 Firebase 实时数据库下载 JSON 项目名称?