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

Firebase Auth短信登录报错:Token mismatch(invalid-app-credential)

Firebase Auth手机号登录Token mismatch错误排查方案

以下是针对你遇到的Token mismatch错误的具体解决步骤:

  • 核对Firebase项目签名指纹
    登录Firebase控制台,进入项目设置的"通用"标签,检查Android/iOS平台下的SHA-1、SHA-256指纹是否和你当前应用构建使用的签名证书一致。调试版和发布版的指纹都要添加,缺少或错误的指纹会直接导致token验证不匹配。

  • 规范手机号格式
    确保传入phoneNumber参数的字符串严格遵循E.164标准,例如+8613800138000,必须包含国际区号,不能有空格、括号等额外字符。格式错误会引发验证流程中的token生成异常。

  • 清除本地缓存并重启应用
    本地缓存的旧验证token可能和服务器端数据冲突,尝试清除应用的缓存数据,完全关闭应用后重新启动,再发起登录请求。

  • 升级Firebase Auth依赖
    检查pubspec.yaml中firebase_auth的版本,升级到最新稳定版。旧版本插件可能存在已知的token匹配逻辑bug,升级后通常能解决这类问题。

  • 正确使用重发验证码的token
    如果需要重新发送短信验证码,必须使用codeSent回调返回的resendToken参数,示例代码如下:

    await _firebaseAuth.verifyPhoneNumber(
      phoneNumber: phoneNumber,
      timeout: const Duration(seconds: 60),
      verificationCompleted: (credential) async {
        // ... 现有逻辑
      },
      verificationFailed: (FirebaseAuthException error) {
        // ... 现有逻辑
      },
      codeAutoRetrievalTimeout: (String verificationId) {
        // ... 现有逻辑
      },
      codeSent: (verificationId, resendToken) {
        // 保存resendToken用于后续重发
        this.resendToken = resendToken;
      },
      forceResendingToken: this.resendToken, // 重发时传入保存的token
    );
    
  • 打印完整错误信息排查
    在verificationFailed回调中打印详细错误信息,方便定位具体问题:

    verificationFailed: (FirebaseAuthException error) {
      print('错误代码: ${error.code}');
      print('错误描述: ${error.message}');
    },
    

    根据输出的错误代码(如invalid-token、operation-not-allowed等),可以更精准地排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:45:38