致命异常:com.google.android.gms.tasks.RuntimeExecutionException:com.google.firebase.firestore.FirebaseFirestoreException:PERMISSION_DENIED

Fatal Exception: com.google.android.gms.tasks.RuntimeExecutionException: com.google.firebase.firestore.FirebaseFirestoreException: PERMISSION_DENIED

提问人:Sajid 提问时间:11/16/2023 更新时间:11/16/2023 访问量:31

问:

PERMISSION_DENIED:权限缺失或不足。

com.google.firebase.firestore.FirebaseFirestoreException

我在 google playstore 上有几个使用 Firestore 作为后端的 Android 应用程序。所有应用程序都有大量的 DAU。它们长期以来一直运行良好,但昨晚,我注意到 Firebase Crashlytics 仪表板中的崩溃报告激增。他们都有相同的例外:

Fatal Exception: com.google.android.gms.tasks.RuntimeExecutionException com.google.firebase.firestore.FirebaseFirestoreException: PERMISSION_DENIED: Missing or insufficient permissions.

奇怪的是,这个异常在凌晨 01:00 到 07:00 AM (UTC+5) 之间同时发生在多个应用程序中,然后停止了。我最近没有更改代码或Firestore规则中的任何内容。我试图在我的设备上重现该问题,但一切按预期工作。我还检查了 Firestore 的使用情况和配额,它们远低于限制。

以下是 Firebase Crashlytics 信息中心的一些屏幕截图,其中显示了崩溃报告:

具有原始类名的应用: enter image description here

具有模糊类名的应用 enter image description here

下面是堆栈跟踪:

Caused by com.google.firebase.firestore.FirebaseFirestoreException: PERMISSION_DENIED: Missing or insufficient permissions.
       at com.google.firebase.firestore.util.Util.exceptionFromStatus(Util.java:112)
       at com.google.firebase.firestore.core.EventManager.onError(EventManager.java:166)
       at com.google.firebase.firestore.core.SyncEngine.removeAndCleanupTarget(SyncEngine.java:596)
       at com.google.firebase.firestore.core.SyncEngine.handleRejectedListen(SyncEngine.java:432)
       at com.google.firebase.firestore.core.MemoryComponentProvider$RemoteStoreCallback.handleRejectedListen(MemoryComponentProvider.java:104)
       at com.google.firebase.firestore.remote.RemoteStore.processTargetError(RemoteStore.java:581)
       at com.google.firebase.firestore.remote.RemoteStore.handleWatchChange(RemoteStore.java:465)
       at com.google.firebase.firestore.remote.RemoteStore.access$100(RemoteStore.java:57)
       at com.google.firebase.firestore.remote.RemoteStore$1.onWatchChange(RemoteStore.java:180)
       at com.google.firebase.firestore.remote.WatchStream.onNext(WatchStream.java:109)
       at com.google.firebase.firestore.remote.WatchStream.onNext(WatchStream.java:38)
       at com.google.firebase.firestore.remote.AbstractStream$StreamObserver.lambda$onNext$1$com-google-firebase-firestore-remote-AbstractStream$StreamObserver(AbstractStream.java:119)
       at com.google.firebase.firestore.remote.AbstractStream$StreamObserver$$ExternalSyntheticLambda2.run(:4)
       at com.google.firebase.firestore.remote.AbstractStream$CloseGuardedRunner.run(AbstractStream.java:67)
       at com.google.firebase.firestore.remote.AbstractStream$StreamObserver.onNext(AbstractStream.java:110)
       at com.google.firebase.firestore.remote.FirestoreChannel$1.onMessage(FirestoreChannel.java:140)
       at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1MessagesAvailable.runInternal(ClientCallImpl.java:661)
       at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1MessagesAvailable.runInContext(ClientCallImpl.java:646)
       at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
       at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133)
       at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
       at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
       at com.google.firebase.firestore.util.AsyncQueue$SynchronizedShutdownAwareExecutor$DelayedStartFactory.run(AsyncQueue.java:234)
       at java.lang.Thread.run(Thread.java:919)

我想知道是什么原因导致多个应用程序中同时出现此权限被拒绝异常,以及如何防止它再次发生。Firebase 服务器或网络连接是否可能存在一些临时问题? 还有其他人遇到过这个问题吗?

我试图重现该问题,但未能成功。

java android firebase kotlin google-cloud-firestore

评论

0赞 Rob 11/17/2023
Sajid jan,试着看看我提供的链接,抛出的异常和你得到的一样,我的意思是这是规则的问题,虽然我知道你没有改变规则,但它可能是其他人有权访问该项目,或者可能是 firestore 旁边的一些错误 - 但这是权限(规则)问题
0赞 Sajid 11/17/2023
嗯,很明显这是一个规则问题。但是在我的多个应用程序中发生的这个特殊事件并不是人为错误(没有其他人可以访问我的 firebase 帐户)。这是谷歌端的一个错误或其他东西,这就是我试图找出的。你提到的那个问题,以及潜在的答案,解决了开发人员端的规则问题。虽然这一特定事件发生在不同的情况下,应该以不同的方式解决。
0赞 Rob 11/17/2023
确定删除第一条评论
0赞 Alex Mamo 11/17/2023
很可能是因为这个而发生的。

答: 暂无答案