Android Java应用手机号OTP登录遇play_integrity_token无效应用信息错误
针对你遇到的Firebase Auth手机号验证失败(错误码17028,提示Invalid app info in play_integrity_token),以下是针对性的排查和解决步骤:
确认Play Integrity API已启用
登录Firebase控制台,进入对应项目的「API和服务」→「库」,搜索「Play Integrity API」,确保该API处于启用状态。Firebase Auth的手机号验证现在依赖此API,未启用会直接触发该错误。同步SHA指纹到Google Cloud Console
仅在Firebase控制台添加SHA指纹可能存在同步延迟,需手动在Google Cloud Console操作:- 进入项目的「API和服务」→「凭据」
- 找到对应的「Android OAuth 2.0客户端ID」
- 将你的SHA-1和SHA-256指纹添加到该客户端ID的「签名证书指纹」列表中
重新下载并替换google-services.json
修改SHA指纹或包名后,务必从Firebase控制台重新下载最新的google-services.json文件,覆盖app模块根目录下的旧文件,确保配置信息完全同步。清理项目缓存并重构
执行以下命令清理Gradle缓存,避免旧签名信息残留:./gradlew clean ./gradlew build --refresh-dependencies或在Android Studio中依次点击「Build」→「Clean Project」→「Rebuild Project」
核对签名配置与指纹一致性
检查app模块的build.gradle文件,确保签名配置指向的keystore与你在Firebase添加SHA指纹的keystore一致:
调试版本示例配置:android { signingConfigs { debug { storeFile file(System.getProperty('user.home') + "/.android/debug.keystore") storePassword 'android' keyAlias 'androiddebugkey' keyPassword 'android' } } buildTypes { debug { signingConfig signingConfigs.debug } } }发布版本需确保配置的keystore路径、别名、密码与生成SHA指纹时使用的完全匹配。
排查自定义Play Integrity逻辑(如有)
若你手动实现了Play Integrity Token的获取逻辑,需确认调用API时使用的包名、签名信息正确,且token未过期。默认情况下Firebase Auth会自动处理此流程,无需自定义,若有额外逻辑需检查参数是否符合要求。
内容的提问来源于stack exchange,提问作者Tareq Ewaida

