You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用Play Integrity与reCAPTCHA校验失败:缺失有效应用标识符

问题分析与解决方案

核心错误原因拆解

报错提示的核心是应用身份校验失败,涉及Play Integrity和reCAPTCHA双重校验未通过,以下是针对性修复步骤:

1. 签名指纹一致性校验

  • 核对Google Play Console「应用签名」页面的SHA-256指纹,确保和Firebase控制台对应应用的SHA-256指纹完全一致(包括Play自动生成的应用签名密钥,而非本地上传密钥)。
  • 若使用App Bundle发布,必须使用Play Console提供的应用签名密钥指纹,本地调试用的签名指纹仅能用于Firebase本地测试,正式环境无效。

2. Play Integrity API配置检查

  • 在Google Play Console的「应用完整性」模块,确认已启用Play Integrity API,且关联的Google Cloud项目与Firebase绑定的项目完全一致。
  • 检查Google Cloud项目中,Play Integrity API的API密钥是否设置了正确的应用限制:包名必须和应用一致,SHA-256指纹需包含Play签名密钥和本地调试密钥(若测试用)。

3. 测试环境合规性调整

  • Play Integrity API不支持直接本地安装的APK/调试包,必须通过Google Play内部测试/封闭测试渠道安装应用后再测试。
  • 测试设备需登录有权限访问测试渠道的Google账号,且设备未被root或篡改系统完整性。

4. Firebase电话认证迁移配置

  • 在Firebase控制台的「电话认证」设置中,切换设备验证方式为Play Integrity,关闭已弃用的Android设备验证选项。
  • 确保客户端代码中Play Integrity令牌的生成逻辑正确:
    // 示例代码:生成并传递Play Integrity令牌
    val integrityManager = IntegrityManagerFactory.create(context)
    // nonce需和Firebase电话认证请求的nonce完全一致,建议用随机字符串
    val nonce = UUID.randomUUID().toString()
    val tokenRequest = IntegrityTokenRequest.builder().setNonce(nonce).build()
    val tokenResponse = runBlocking {
        integrityManager.requestIntegrityToken(tokenRequest).await()
    }
    // 将tokenResponse.token传入FirebasePhoneAuthProvider.verifyPhoneNumber的options中
    
  • 禁止对nonce进行编码、截断等修改,必须原封不动传递给Play Integrity和Firebase。

5. 日志深度排查

  • 过滤Logcat的「PlayIntegrity」「FirebaseAuth」标签,查看具体错误细节:
    • 若出现「signature mismatch」,优先核对签名指纹;
    • 若出现「API key not valid」,检查Cloud项目的API密钥配置;
    • 若出现「package name mismatch」,确认API密钥的应用限制包名与应用实际包名一致。

内容的提问来源于stack exchange,提问作者Manjeet Prasad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 19:03:11