Flutter集成FirebaseAuth短信验证失败(错误码17028:play_integrity_token无效)
错误日志
E/FirebaseAuth(12806): [SmsRetrieverHelper] 短信验证码请求失败:未知状态码:17028 play_integrity_token请求字段无效
D/FirebaseAuth(12806): 针对手机号+994503731324的验证失败后,调用原始失败回调,错误信息 - 此应用未获授权使用Firebase Authentication。请确认Firebase控制台中已配置正确的包名、SHA-1和SHA-256。[ play_integrity_token请求字段无效 ]
I/flutter (12806): 此应用未获授权使用Firebase Authentication。请确认Firebase控制台中已配置正确的包名、SHA-1和SHA-256。[ play_integrity_token请求字段无效 ]
排查解决步骤
核对应用签名指纹
- 获取当前构建包的签名指纹:
- 调试包:执行命令
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android - 发布包:用打包keystore执行
keytool -list -v -keystore 你的keystore路径 -alias 你的alias
- 调试包:执行命令
- 登录Firebase控制台,进入项目「设置 > 应用」,检查对应Android应用的SHA-1、SHA-256指纹是否和本地生成的完全一致,无空格、字符错误。
- 获取当前构建包的签名指纹:
确认包名完全匹配
检查Firebase控制台的应用包名,与Flutter项目中android/app/src/main/AndroidManifest.xml的package属性、android/app/build.gradle的applicationId完全一致,大小写、字符不能有差异。重新替换google-services.json
修改签名或包名后,从Firebase控制台重新下载google-services.json,替换到android/app目录下,然后执行:flutter clean重启开发工具后重新构建项目。
启用Play Integrity API
- 打开Google Cloud Console,进入对应Firebase项目
- 搜索并启用「Play Integrity API」
- 进入IAM页面,给Firebase Auth服务账号添加
Play Integrity Viewer或Editor角色
验证构建签名配置
检查android/app/build.gradle的签名配置,确保调试、发布构建的签名信息与Firebase控制台添加的一致:signingConfigs { debug { storeFile file('debug.keystore') storePassword 'android' keyAlias 'androiddebugkey' keyPassword 'android' } release { storeFile file('your-release-key.jks') storePassword 'your-password' keyAlias 'your-alias' keyPassword 'your-password' } }
内容的提问来源于stack exchange,提问作者Unudulmayan melodiyalar

