同事的Flutter项目Firebase Auth授权失败(错误17028)求助
先贴出遇到的错误日志:
E/FirebaseAuth(32217): [SmsRetrieverHelper] SMS verification code request failed: unknown status code: 17028 Invalid app info in play_integrity_token
D/FirebaseAuth(32217): Invoking original failure callbacks after phone verification failure for +1[phonenumber], error - This app is not authorized to use Firebase Authentication. Please verify that the correct package name, SHA-1, and SHA-256 are configured in the Firebase Console. [ Invalid app info in play_integrity_token ]
你已经完成了添加SHA密钥、验证包名、flutter pub get/clean、清理应用存储、重新拉取项目、真机测试等常规操作,但问题依旧。针对17028错误,核心是Play Integrity Token中的应用信息不匹配,可以从以下深层方向排查:
让同事自行生成并核对SHA密钥
不要直接复用你的SHA密钥,让同事在自己终端执行对应命令生成本地调试/发布版的SHA-1和SHA-256:
调试版(默认):# macOS/Linux keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android # Windows keytool -list -v -keystore C:\Users\<你的用户名>\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android复制完整的密钥字符串(注意不要带空格或换行),到Firebase后台的「项目设置→应用→SHA证书指纹」里替换或添加,保存后重新下载
google-services.json替换到项目的android/app目录。检查Play Integrity API的启用状态
这个错误直接关联Play Integrity服务,登录Google Cloud Console(Firebase后台顶部可跳转至对应Cloud项目),搜索「Play Integrity API」,确认该API状态为「已启用」。如果未启用,点击启用后等待几分钟再测试。核对本地安卓签名配置
打开项目android/app/build.gradle,检查signingConfigs块的配置,确保debug/release版本使用的keystore路径、alias、密码和生成SHA密钥时的参数完全一致。若debug签名配置被修改过,会导致实际运行的应用签名与Firebase后台记录的SHA不匹配。强制刷新Firebase配置缓存
除常规flutter clean外,让同事删除安卓项目的.build目录(android/.build),再执行:flutter clean cd android && ./gradlew clean cd .. && flutter pub get重启IDE后重新运行项目,避免旧配置缓存导致的问题。
排除测试环境的特殊限制
若使用Firebase测试手机号,确认该号码已在「Firebase Auth→手机号验证→测试号码」中添加且状态正常。另外,真机测试时确保设备的Google Play服务为最新版本,旧版本可能影响Play Integrity Token的生成。
内容的提问来源于stack exchange,提问作者Dj Ross

