0

我使用 Flutter、Timer 和 Firebase/Firestore.batch 来执行类似此示例代码的操作,以便在 Mac 上定期保存数据。 https://github.com/tomoyuki28jp/flutterfire_scheduled_batch_write_sample2

当我运行我的应用程序几天时,我随机收到此错误:

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>
  • 热重载后,它又开始工作了。
  • 后台任务不断抛出此错误,直到重新启动或重新加载我的应用程序
  • 虽然后台任务引发此错误,但我仍然可以通过手动使用我的应用程序 UI 成功保存 Firestore 数据。

我该如何调查原因?

4

1 回答 1

-1

用户凭据确实会随着时间的推移而过期 - 热重新加载可能会重新建立 Auth 会话。众所周知,需要定期重新建立 Auth - Firestore 并不是真正的永久连接。您的代码需要能够响应 Auth 状态的变化(有一个库函数来侦听 Auth 事件),并做出相应的响应 - 包括重新授权(如果这是您的意图)。

于 2021-05-20T03:24:10.247 回答