Firebase Appcheck 拒绝某些用户的请求

问题描述 投票:0回答:1

我最近收到一些用户的通知,表明我的应用程序无法运行。此问题已导致多次卸载。分析问题后发现是Appcheck阻止了用户访问数据库。

我附上了一张屏幕截图,显示了未经验证和无效的请求,我不确定为什么会随机发生这种情况。我已经升级了SDK,但问题仍然存在。

   implementation platform('com.google.firebase:firebase-bom:32.7.3')
   implementation 'com.google.firebase:firebase-appcheck-playintegrity'
   implementation 'com.google.firebase:firebase-appcheck-debug'

我正在按照文档所述方式在

FirebaseAppCheck
类中初始化我的
Application
:

    FirebaseApp.initializeApp(getApplicationContext());
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            PlayIntegrityAppCheckProviderFactory.getInstance());

我已经广泛研究了这个问题,但不幸的是,我无法找到明确的解决方案。这尤其令人痛苦,因为它影响了我的用户群,每周失去 200 多名用户。我仍在积极寻求解决方案,任何帮助将不胜感激

编辑:

我可以在我的设备上重现该问题,这是日志消息:

Firebase Database connection was forcefully killed by the server. Will not attempt reconnect. Reason: Invalid appcheck token

问题出在从Play商店安装的版本上,我也在另一台设备上尝试过,它有效!真是让人心疼啊

android firebase firebase-app-check
1个回答
0
投票

联系 Firebase 支持团队后,我终于解决了该问题。我们意识到这是一个设备完整性问题。我收到此消息的设备:

Reason: Invalid appcheck token 

仅具有 MEETS_BASIC_INTEGRITY 完整性判决,而我的 Play Integrity API 只接受 MEETS_DEVICE_INTEGRITY。这解释了为什么我的应用程序可以在第二台设备上运行。这里有两个捕获来说明差异。

捕获 1:设备拒绝连接

截图2:设备连接成功

为了解决这个问题,我将 MEETS_BASIC_INTEGRITY 添加到 Play Integrity API verdict

Play 控制台 -> 应用程序 -> 应用程序完整性 -> Play 完整性 Api 设置

然后检查MEETS_BASIC_INTEGRITY并保存。

我还检查了MEETS_STRONG_INTEGRITY,设置结果将是这样的:

既然问题已经解决,您仍然需要注意,根据 Firebase 的说法,选择这种较低级别的标签确实会带来安全性降低的成本,应谨慎启用。

我邀请您阅读更多有关诚信判决

的内容
© www.soinside.com 2019 - 2024. All rights reserved.