Отладка [cloud_firestore/permission-denied] У вызывающего абонента нет разрешения на выполнение указанной операции

Я использую Flutter, Timer и Firebase / Firestore.batch, чтобы делать что-то вроде этого примера кода для периодического сохранения данных на Mac. (Этот пример кода каким-то образом не воспроизводит проблему.)Https://github.com/tomoyuki28jp/flutterfire_scheduled_batch_write_sample

Когда я запускаю свое приложение в течение нескольких дней, я случайно получаю эту ошибку:

      flutter: [cloud_firestore/permission-denied] The caller does not have permission to execute the specified operation.
flutter:
#0      MethodChannelWriteBatch.commit
package:cloud_firestore_platform_interface/…/method_channel/method_channel_write_batch.dart:51
<asynchronous suspension>
  • После горячей перезарядки снова заработал.
  • Фоновая задача продолжает выдавать эту ошибку до перезапуска или перезагрузки моего приложения.
  • Хотя фоновая задача вызывает эту ошибку, я все же могу успешно сохранить данные хранилища данных, используя пользовательский интерфейс моего приложения вручную.

Я попытался создать образец приложения для воспроизведения ошибки, но попытка пока не увенчалась успехом. Как я могу выяснить причину? (Я могу использовать отладчик.)

1 ответ

Учетные данные пользователя действительно истекают со временем - горячая перезагрузка, вероятно, повторно устанавливает сеанс аутентификации. Известно, что Auth необходимо периодически восстанавливать - Firestore НЕ предназначен для постоянного подключения. Ваш код должен иметь возможность реагировать на изменения в состоянии Auth (есть функция библиотеки для прослушивания событий Auth) и реагировать соответствующим образом, включая повторную авторизацию, если это ваше намерение.

Другие вопросы по тегам