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

Firebase手机号验证出现Invalid SafetyNetToken错误怎么办?

问题排查与解决方案
  • 校验双应用的指纹配置完整性
    因你配置了applicationIdSuffix ".debug",项目实际存在2个独立的应用身份,需要分别配置签名指纹:
    1. 正式包(不带.debug后缀的包名):配置发布签名的SHA-1、SHA-256
    2. Debug包(带.debug后缀的包名):配置本地debug.keystore的SHA-1、SHA-256
      注意:Firebase SafetyNet校验强制要求配置SHA-256,仅配置SHA-1无法通过校验,这是大多数同类问题的根因。配置完成后需要重新下载google-services.json放到项目对应目录,全量清理编译缓存后重新打包测试。
  • 检查Google Cloud项目的SafetyNet服务状态
    进入对应Firebase项目绑定的Google Cloud控制台,确认以下配置:
    1. SafetyNet API处于已启用状态,未被限制或配额超限
    2. OAuth同意屏幕已完成配置,若应用未正式发布,需要将测试用到的Google账号添加到测试用户列表中
  • 校验依赖与环境配置
    1. 更新项目依赖的Firebase Auth组件到最新稳定版,推荐使用Firebase BOM统一管理版本,避免组件版本不兼容问题
    2. 测试设备的Google Play服务需更新到最新版本,部分老旧版本的Play服务会导致SafetyNet token生成异常
    3. 确认设备系统时间与网络时间同步,SafetyNet token有严格的有效期校验,设备时间偏差超过5分钟会直接导致token校验失败
    4. 优先使用搭载完整Google Play服务的真机测试,部分定制ROM或模拟器可能缺少SafetyNet运行必要的组件
  • 检查混淆配置
    若项目开启了ProGuard/R8混淆,需要添加以下混淆规则避免相关类被误裁剪:
    -keep class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
        public static final *** NULL;
    }
    -keepnames @com.google.android.gms.common.annotation.KeepName class *
    -keepclassmembernames class * {
        @com.google.android.gms.common.annotation.KeepName *;
    }
    -keepnames class * implements android.os.Parcelable {
        public static final ** CREATOR;
    }
    -keep class com.google.firebase.auth.** { *; }
    

完成以上排查步骤后,清理项目缓存重新打包,即可解决SafetyNet渠道的校验异常问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:57:01