Флаттер: firebase_auth не работает, как мне авторизоваться? - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть работающее приложение, которое использует пакет cloud_firestore, оно хорошо работает с Android и iOS.Но моя база данных «разрешить чтение, запись: если истина», и поэтому Google продолжает напоминать мне, чтобы исправить эту ненадежность.Это я сделал:

  • включая firebase_auth
  • изменив мои правила на firebase
  • создав учетную запись почты / пароля
  • реализуя процедуру входа в систему
  • изменив правила на "разрешить запись: if request.auth! = Null;"

Я думаю, я все сделал нормально.В приложении это выглядит так:

print("User ${(await FirebaseAuth.instance.currentUser()).email})");

Это дает мне почту моей учетной записи.Также у меня есть слушатель onAuthStageChanged, и я получаю то, что ожидал.Поэтому я предполагаю, что вход в систему работал.

Но если я пытаюсь получить доступ к базе данных, например, с помощью .setData (), я получаю ошибку

W / Firestore (4411): (19.0.0) [Firestore]: запись не удалась в ...: Status {code = PERMISSION_DENIED, description = отсутствует или недостаточно разрешений. ,Ause = null}

Мне показалось, что пакет auth не информируетпакет пожарного магазина правильно.В журналах я вижу

D / FirebaseAuth (5698): Уведомление слушателей токена id о пользователе (...).

Я ожидаю что-то вроде "Firestore: полученный токен ...", но это не приходит.

Должен ли я быть осторожным с порядком инициализации?Мой -

  1. _app = await Firebase.App.configure ...
  2. _firestore = Firestore (app: _app);
  3. await FirebaseAuth.instance.signInWithEmailAndPassword...

Я пробовал на некоторых устройствах Samsung и OnePlus с Android 8 и 9.

Кто-нибудь намекает на кого-то?

1 Ответ

0 голосов
/ 24 сентября 2019

Я запустил это !!Использовал подсказку от Flutter & Firebase - использование firebase_storage вместе с firebase_auth

При доступе к базе данных я использовал указатель на firestore, который я создал как

static Firestore _firestore;
...
_firestore = Firestore(app: ...);

А потом я использовал

await _firestore.collection(...)...setData(...);

Но Firestore, похоже, меняется после входа в систему.Это работает, когда я пишу:

await Firestore.instance.collection...setData

Интересно !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...