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

Flutter Firebase短信无法发送:SHA密钥验证错误

解决Firebase Auth状态码17028(SHA-256不匹配)问题

E/FirebaseAuth(21751): [SmsRetrieverHelper] 短信验证码请求失败:未知状态码:17028 已传入safety_net_token,但Firebase控制台中未注册匹配的SHA-256。请确保此应用的packageName/SHA256配对已在Firebase控制台中注册。
I/flutter (21751): 此应用未被授权使用Firebase Authentication。请验证Firebase控制台中是否配置了正确的包名和SHA-1。[ 已传入safety_net_token,但Firebase控制台中未注册匹配的SHA-256。请确保此应用的packageName/SHA256配对已在Firebase控制台中注册。 ]


排查解决步骤:

  • 确认应用实际使用的SHA-256值

    • 调试环境:执行命令获取调试密钥的SHA-256:
      keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
      
    • 发布环境:如果是Google Play签名的应用,登录Google Play控制台,进入「应用签名」页面,复制上传密钥和应用签名密钥的SHA-256;如果是自签名包,用对应签名文件执行keytool命令获取。
    • Flutter项目注意:如果使用FlutterFire CLI初始化配置,确保当时输入的SHA值和当前应用使用的一致。
  • 核对Firebase控制台的SHA注册

    • 打开Firebase控制台对应项目,点击应用设置(齿轮图标),找到「应用签名」区域。
    • 检查已注册的SHA-256列表,确保包含当前应用所有环境(调试、发布、Google Play)的SHA值,且包名与SHA值的配对完全正确——别把两个应用的包名和SHA搞混。
  • 更新配置文件并重建项目

    • 在Firebase控制台修改SHA后,重新下载对应应用的google-services.json文件。
    • 替换项目android/app目录下的旧文件,然后执行以下命令清理并重建:
      flutter clean
      flutter pub get
      flutter run
      
  • 检查SafetyNet授权(若启用)

    • 如果项目启用了SafetyNet,确保Firebase项目已开启SafetyNet API,且当前应用的包名和SHA-256已在API控制台中完成授权。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:20:37