Debug[cloud_firestore/permission denied]调用方没有执行指定操作的权限



我使用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数据

如何调查原因?

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

最新更新