共计 2153 个字符,预计需要花费 6 分钟才能阅读完成。
最近在集成谷歌登录功能时,不少开发者遇到了 Play Integrity Verification Failed 错误。这个错误虽然看起来让人头疼,但通过正确的配置和调试,完全可以解决。本文将详细解释这个错误的背景、原因,并提供完整的解决方案。

错误背景和常见触发场景
Play Integrity Verification Failed通常出现在使用谷歌登录功能时,尤其是当应用尝试验证设备完整性时失败。这个错误可能有以下几种触发场景:
- API 配置错误:Google Play Integrity API 未正确配置或未启用。
- 签名问题:应用的签名与 Google Play Console 中注册的签名不匹配。
- 设备兼容性问题:某些设备可能不支持 Play Integrity API。
- 网络问题:请求超时或网络不稳定导致验证失败。
Google Play Integrity API 的工作原理
Google Play Integrity API 是一个用于验证设备完整性和应用真实性的服务。它的工作原理如下:
- 客户端请求:应用向 Google Play 服务发送一个完整性验证请求。
- 服务端验证:Google Play 服务返回一个包含设备完整性信息的令牌。
- 服务端验证:应用的后端服务器使用 Google 的 API 验证令牌的有效性。
正确的 API 配置步骤
要解决 Play Integrity Verification Failed 错误,首先需要确保 Google Play Integrity API 已正确配置。以下是详细的配置步骤:
- 启用 Google Play Integrity API:
- 打开Google Cloud Console。
- 选择你的项目,然后导航到
API 和服务>库。 -
搜索
Google Play Integrity API并启用它。 -
配置 API 密钥:
- 在
API 和服务>凭据中创建一个新的 API 密钥。 -
确保密钥未被限制,或仅限制为你的应用包名。
-
验证应用签名:
- 在 Google Play Console 中,确保你的应用签名与开发环境中使用的签名一致。
- 如果使用 Firebase,确保在 Firebase 控制台中正确配置了 SHA- 1 和 SHA-256 签名。
完整的代码示例
Kotlin/Java 示例
// 初始化 Play Integrity API
val playIntegrityClient = PlayIntegrity.getClient(context)
// 创建请求
val request = PlayIntegrityRequest.builder()
.setCloudProjectNumber("YOUR_CLOUD_PROJECT_NUMBER")
.build()
// 发送请求
playIntegrityClient.requestIntegrityToken(request)
.addOnSuccessListener { response ->
val integrityToken = response.token()
// 将令牌发送到后端进行验证
sendTokenToBackend(integrityToken)
}
.addOnFailureListener { e ->
// 处理错误
Log.e("PlayIntegrity", "Verification failed", e)
}
Python 后端验证示例
import requests
def verify_integrity_token(token, cloud_project_number):
url = f"https://playintegrity.googleapis.com/v1/{cloud_project_number}:decodeIntegrityToken"
headers = {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {"integrity_token": token}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
return response.json()
else:
raise Exception(f"Verification failed: {response.text}")
调试技巧和常见问题排查
- 检查 API 密钥:确保 API 密钥未被限制或已正确配置。
- 验证签名 :使用
keytool检查应用的签名是否与 Google Play Console 中的一致。 - 查看日志:Android Studio 的 Logcat 中可能有更详细的错误信息。
- 测试环境 :在开发和测试阶段,可以使用
Play Integrity API的测试模式,避免配额限制。
安全最佳实践和性能考量
- 限制 API 访问:在 Google Cloud Console 中限制 API 密钥的使用范围。
- 缓存令牌:对于频繁的验证请求,可以考虑在后端缓存验证结果以提高性能。
- 监控和日志:记录所有的验证请求和结果,便于排查问题。
结语
通过以上步骤,你应该能够解决 Play Integrity Verification Failed 错误。如果在实施过程中遇到任何问题,可以参考 Google 的 官方文档 或社区论坛。希望这篇指南对你有所帮助,也欢迎分享你的解决方案和经验!
正文完
发表至: 技术指南
近一天内
