我已经使用 google play 完整性 API 发布了我的应用程序。设备完整性检查成功后应用程序可以运行
"deviceIntegrity": {
"deviceRecognitionVerdict": ["MEETS_BASIC_INTEGRITY", "MEETS_DEVICE_INTEGRITY"]
},
Run Code Online (Sandbox Code Playgroud)
我发现一些用户面临的问题是设备在安装时通过了设备完整性,但在重新启动设备后,设备完整性检查失败
这是我在重启后调试期间发现的响应
{
"requestDetails": {
"requestPackageName": "com.my.package",
"timestampMillis": "1674455009345",
"nonce": "Y29tLm1hbnRyYS5yZHNlcnZpY2UyMDIzMDEyMzExNTIzMjajHDrnJ9vtl2AfC1fUdEDJmD_HfvFtcpc\u003d"
},
"appIntegrity": {
"appRecognitionVerdict": "UNEVALUATED"
},
"deviceIntegrity": {
},
"accountDetails": {
"appLicensingVerdict": "UNEVALUATED"
}
}
Run Code Online (Sandbox Code Playgroud)
我搜索了未评估的结果
“没有评估应用程序完整性。错过了必要的要求,例如设备不够值得信赖。”
但只有重新启动 Android 设备后才会出现此问题
我希望有人可以帮助我们解决这个问题。
过去,reCaptcha 被用作 SafetyNet API 的后备。但是,自 2023 年 2 月以来,没有新项目可以再使用 SafetyNet API。看起来后继者 - Play Integrity API - 无法完成与 SafetyNet API 相同的工作。
我一直收到 reCaptcha 验证“验证您不是机器人......”。这不仅适用于“原生 Android 应用程序”,而且我也听到人们抱怨 React Native 或Flutter 应用程序存在这个问题。
我在 Play Console 中启用了 Play Integrity API,并将其链接到我的 Firebase 项目,如以下屏幕截图所示。


我还就此联系了 Google 支持人员,但说实话,这非常令人困惑。我们交换了很多电子邮件,并提出了很多使用 SafetyNet API 的建议(这是不可能的,因为它甚至不再在 GCP 上列出)。他们在一封电子邮件中写道:
遗憾的是,我们无法提供 Play Integrity API 电话身份验证实施的时间表。目前,您可以使用 reCAPTCHA 验证进行电话号码身份验证。SafetyNet 弃用与 reCAPTCHA API 无关。两个 SafetyNet API 是独立的,并且 Attestation API 弃用不会影响 reCAPTCHA API。即使迁移到 Play Integrity API 后,您仍然可以使用此 API。
我在这里做错了什么吗?您有什么建议来解决它?
我正在将我的应用程序从 Google play safety net API 迁移到 Integrity API,但将其发布到 Playstore 后,该应用程序无法运行。只显示加载中。
我的项目使用 Flutter 框架运行。游戏控制台设置和设置已完成。但我对在 Flutter 中集成和设置播放完整性 API 没有任何想法。有人对这个有什么想法吗?
implementation "com.google.android.play:integrity:1.0.1"
Run Code Online (Sandbox Code Playgroud)
我已经添加到build.gradle文件的依赖项中。
我正在尝试在我的 Android 应用程序中实现 PlayIntegrity API,但我不知道如何使用 Google 的服务器解密和验证令牌。
到目前为止我一直遵循文档:
现在我坚持向 发出解码请求googleapis。我不明白这个指令是如何工作的。
我创建了一个服务帐户,下载了 JSON 凭证文件并将其放入我的 Laravel 项目中,然后我尝试了这段代码:
$client = new Client();
$client->setAuthConfig(storage_path('app/integrity_check_account.json'));
$client->addScope(PlayIntegrity::class);
$httpClient = $client->authorize();
$result = $httpClient->request('POST', 'https://playintegrity.googleapis.com/v1/my.package.name', [
'headers' => ['Content-Type' => 'application/json'],
'body' => "{ 'integrity_token': 'token' }"
]);
dd($result);
Run Code Online (Sandbox Code Playgroud)
所以我对这段代码有两个问题:
首先,我试图在我的应用程序中实现短信登录。当我尝试向 user 发送短信时出现此错误。
说明:我的应用程序在一个月前工作正常,但将其上传到 Google Play 控制台后,我的应用程序损坏了,我不知道为什么或如何,但应用程序要求我添加 AppCheck 、播放完整性等。我添加了所有这些,现在它给出了我这个错误:
I/flutter (30956):此应用无权使用 Firebase 身份验证。请验证 Firebase 控制台中是否配置了正确的包名称、SHA-1 和 SHA-256。[ play_integrity_token 中的应用程序信息无效]
我检查了 firebase 控制台和 google 云控制台中的每个 sha 密钥。在真实设备中进行测试,看看问题是否与模拟器有关,但真实设备(android)也不起作用。应用程序检查在调试和 playIntegrity 模式下进行测试。我在 firebase 中检查了 AppCheck,它显示我的身份验证尝试已获得授权,但错误另有说明。AppCheck 已强制执行。
android firebase-authentication flutter firebase-app-check google-play-integrity-api
由于 SafetyNet 已被弃用,我尝试使用 PlayIntegrity 来消除在使用 Firebase 电话身份验证时打开的 ReCaptcha 弹出窗口。
但即使在 Flutter 中启用它并初始化应用程序检查后,ReCaptcha 仍然打开。
await FirebaseAppCheck.instance.activate(
webRecaptchaSiteKey: 'recaptcha-v3-site-key',
androidProvider: AndroidProvider.playIntegrity,
);
Run Code Online (Sandbox Code Playgroud)
otp 消息包含我的项目 URL,而不是应用程序名称。
经过一番搜索后,我发现我需要在 SafetyNet 和 PlayIntegrity 中注册我的应用程序,以免验证码验证失败。但由于 SafetyNet 不接受任何新项目,我无法在其中注册我的应用程序。
我已经尝试了很多,但没有解决这个问题,请帮助我。
dart firebase-authentication flutter google-play-integrity-api
我已经设置了 App Check,几乎没有出现任何问题,并且它适用于我的应用程序的生产版本。但是,对于通过 Firebase 应用程序分发分发的应用程序的内部测试版本的所有 Firebase 请求,我都被拒绝。我已将 AAB 的 SHA-256 测试证书从“应用程序分发”页面复制到“应用程序检查”的“播放完整性”部分。我们的测试用户正在通过 Firebase App Distribution 应用中的链接从 Play 商店下载内部测试版本。我还在我的个人手机上安装了内部测试版本,但出现了权限被拒绝的错误。发布版本对每个人(包括测试人员)都运行良好,但内部测试版本则不然。此外,我在 Play 商店控制台上查看了内部测试版本的 SHA-256 密钥。它与应用程序分发密钥完全相同。发布版本和测试版本是相同的,一旦测试完成,测试版本就会升级为测试版本。然后将 beta 升级到生产环境。同样,Beta 版和 Production 都运行良好。关于为什么测试密钥不起作用有什么想法吗?
android firebase firebase-app-check google-play-integrity-api
由于安全网设备验证已弃用,Flutter 电话身份验证无法正常工作。
\n对于 2023 年 1 月之后创建的新项目,安全网选项不可用。我们必须使用Play Integrity API。
\n我从 Firebase 项目启用了 Play Integrity API。
\n按照开始在 Android 上使用 App Check 和 Play Integrity 中的建议链接 Firebase 项目。
\n我按照 Flutter 应用程序中的应用程序检查入门中的建议从 Flutter 代码启用了Play Integrity。
\n它仍然\xe2\x80\x99s重定向到浏览器页面,要求我们使用reCAPTCHA验证应用程序。
\n在浏览器页面上我收到此错误:
\n\n\n由于缺少初始状态,无法处理请求。如果浏览器 sessionStorage 无法访问或意外清除,则可能会发生这种情况。
\n
当我按回键时,我收到“缺少客户端标识符错误”:
\n[![在此处输入图像描述][5]][5]
\n\n我提到的任何内容都无法帮助我修复错误消息。有办法吗?
\ngoogle-cloud-platform firebase-authentication flutter safetynet google-play-integrity-api
我们希望在不支持注册的免费应用程序中实现完整性检查系统,以确保应用程序不会被修改,也不会从 Play 商店外部安装。
我们希望服务器只响应有效的应用程序。我们研究了 Play Integrity API,但它的调用限额为每天 10,000 个请求,因此只能在首次安装启动时调用它。我们无法找到一种方法来使用这个系统来解决我们的问题。
有谁知道有什么解决办法吗?
根据官方文档 ( https://developer.android.com/google/play/integrity/verdict ) 解密和验证 Google Play完整性判决时,共享的代码片段/样本使用以下常量:AES_KEY_SIZE_BYTES和AES_KEY_TYPEEC_KEY_TYPE
但这些的价值却从未被提及。有人可以帮忙吗,这些价值观是什么?