что вызывает сообщение об отказе в разрешении с FIREBASE и FLUTTER - PullRequest
0 голосов
/ 06 сентября 2018

У меня ошибка

'W / SyncTree (31625): прослушивание по адресу / ошибка: DatabaseError: разрешение запрещено'

при отправке запроса в firebase с анонимным пользователем firebase и без причудливых правил базы данных firebase :). ... и я хочу узнать, что вызывает это сообщение.

РЕДАКТИРОВАТЬ: ошибка то же самое с существующим пользователем, означает, что пользователь входа, кажется, работает, но доступ к базе данных не.

Что я сделал до сих пор:

  • Настройка firebase (включая добавление google_service.json, зависимостей в pubspec.yaml) - пока работает
  • создание логина следующим образом (как в примере с Google ссылка ):

    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 предоставляет идентификатор пользователя (и этот идентификатор также находится в разделе аутентификации firebase) -> мне кажется, что я вошел в систему как пользователь

  • реализовать вид инициализации, как в примере Google ( ссылка ):

    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));
    }
    
  • в другом виджете с состоянием в состоянии, я пытаюсь запросить некоторые данные о базе данных:

    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",
    
  • я использую сертификат / отпечаток пальца SHA-1 в моем firebase android app

  • я использую ту же базу данных Firebase с firebase ios app без каких-либо проблем при использовании анонимных пользователей

Что мне нужно:

Мне нужен некоторый совет, как узнать, есть ли какие-либо проблемы с этим кодом инициализации или с логином пользователя или чем-то еще

1 Ответ

0 голосов
/ 06 сентября 2018

Кажется, что база данных неправильно адресована в FirebaseApp.configure(

FirebaseDatabase.instance.reference().child(...)

будет использовать базу данных по умолчанию для проекта, настроенного в google-services.json

...