我已经尝试了几天使用 Play Integrity 来实现应用程序检查(因为 SafetyNet,这是我之前可以开始工作的所有内容已被弃用),但无论我做什么,我只能使用它来使其在开发中工作调试令牌,而不是发布中的令牌。官方文档似乎在说了如何设置它以进行开发/调试后就停止了。每当我尝试登录发布版本时,都会收到错误:Firebase 应用程序检查令牌无效。使用未知/空密钥。最近有人能够让它工作吗?
Play Integrity 与 App Check 集成时可检查该应用程序是否是真实的、未经篡改的应用程序以及该设备是否是真实的、未经篡改的设备。
要验证该应用程序是真实的、未经篡改的应用程序,您必须从 Play 商店下载该应用程序。它使用 Google Play 商店中的 SHA-256 证书指纹来验证应用程序是否使用适当的签名密钥进行签名。在这种情况下,它应该是 PLAY_RECOGNIZED 判决。
要验证设备是否是正品设备,它应该运行最新版本的 Google Play 服务并且是真实设备,而不是模拟器。此外,设备应该使用 Android 操作系统的签名发行版,可能加载的一些其他 ROM 可能不支持 Play Integrity。在这种情况下,这将是 MEETS_STRONG_INTEGRITY 判决。
根据上面提供的信息,您似乎正在运行一个无法通过正版设备检查的模拟器。我建议您获取真实设备进行测试,然后从 Google Play 商店获取您的应用程序以验证是否已签署相应的密钥。
如果您最终购买了 Android 设备,您还需要确保设备上包含 Google Play,而不是从 APK 镜像下载的 Google Play 版本。有些设备有替代的认证提供商而不是 Google Play(三星支持 Knox 和 Play Integrity,华为仅支持华为安全检测)。
通过 Play Integrity for App Check,指定了最高级别的安全性,因为这可以防止最严重的服务滥用。
如果您觉得这种保护级别太多,您始终可以使用 Play Integrity(或您选择的其他证明提供程序)实现自定义提供程序并降低保护级别。例如,在您的情况下,如果您不打算从 Google Play 获取应用程序,然后自己验证证书摘要,则可能需要将保护降低为“无法识别”。如果您想在模拟器上运行,您还可以将安全性降低到 MEETS_VIRTUAL_INTEGRITY。这两者都会使您的应用程序遭受大量滥用,因为具有虚拟完整性意味着人们可以从 Play 中获取您的应用程序版本,并使用模拟器进行脚本滥用。如果您只检查应用程序完整性,则需要确定您正在验证的摘要是有效的并且与您已知的摘要匹配,否则,人们可以下载您的应用程序的镜像版本并更改一些二进制组件以绕过您的应用程序预期用途。
我希望这有助于解释 Play Integrity API 及其与 App Check 的一些预期用途。