Это мой код выхода:

  onPressed: () async {
                await FirebaseAuth.instance.signOut();
                await widget.checkLogin();
              },

Это моя функция CheckLogin:

  checkLogin() async {
    if (FirebaseAuth.instance.currentUser != null) {
      login = true;
      setState(() {});
    } else {
      login = false;
      setState(() {});
    }
  }

 

Ошибка, которую он выдает мне после выхода из системы, следующая:

Unhandled Exception: [firebase_database/permission-denied] Client doesn't have permission to access the desired data.

С разными попытками понял, что проблема кроется в этих строчках кода, но как исправить не знаю...

      if (FirebaseAuth.instance.currentUser != null) {
  WidgetsBinding.instance.addPostFrameCallback((_) async {
    DatabaseReference ref = FirebaseDatabase.instance.ref("temp");
    if (FirebaseAuth.instance.currentUser != null) {
      ref.onValue.listen((DatabaseEvent event) {
        final snapshot = event.snapshot.value;
        if (snapshot != null) {
          Object? temp = snapshot;

          if (mounted) {
            setState(() {});
          }
        }
      });
    }
  });
}

Кто-нибудь знает, как исправить?

0
Jonathan 16 Ноя 2022 в 10:47
Я бы предположил, что вам не разрешено читать из базы данных, когда вы вышли из системы: в FirebaseDatabase.instance.ref("temp");
 – 
Stefan Galler
16 Ноя 2022 в 10:55
Точно, для чтения или записи в базу данных пользователь должен быть аутентифицирован…
 – 
Jonathan
16 Ноя 2022 в 12:14

1 ответ

Перейдите в консоль Firebase и обновите свои правила следующим образом.

Выберите базу данных из бокового меню --> Выберите правило из вкладок выше --> Обновите правило следующим образом.

  {
        "rules": {    
            ".read": true,
            ".write": true
        }
    }
0
MrShakila 16 Ноя 2022 в 11:35
Для чего мне нужно, чтобы правила в базе данных диктовали, что пользователь должен быть аутентифицирован для чтения или записи
 – 
Jonathan
16 Ноя 2022 в 12:15
Если вы разрабатываете приложение, вы можете попробовать изменить эти значения, чтобы решить вашу проблему, если это не решит вашу проблему, пожалуйста, добавьте комментарий
 – 
MrShakila
16 Ноя 2022 в 12:17
Ваше временное решение, мне нужно окончательное решение, так как они находятся в предзапуске
 – 
Jonathan
16 Ноя 2022 в 12:20