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

Firebase手机号认证遇FirebaseAuthInvalidCredentialsException:号码格式错误

解决Firebase手机号认证格式错误问题

核心问题定位

你代码里获取手机号的方式完全错误:

mPhoneNumber = mBinding.registerInputPhoneNumber.toString();

registerInputPhoneNumber是EditText控件,调用toString()得到的是控件的对象描述(比如android.widget.EditText@xxxxxx),根本不是用户输入的号码,这直接导致Firebase收到的内容完全不符合E.164格式,触发错误。

分步解决方案

  1. 修正手机号获取逻辑
    替换成获取EditText的输入文本,同时去除首尾空格:

    mPhoneNumber = mBinding.registerInputPhoneNumber.text.toString().trim()
    
  2. 确保手机号严格符合E.164格式

    • 必须以+开头,紧跟国家码(比如中国是+86),后面是纯数字的手机号,不能包含空格、括号、横杠等符号
    • 示例正确格式:+8613800138000
    • 可以在代码里做格式校验,自动补全国家码并清理无效字符:
      // 假设默认国家码是+86,根据需求调整
      if (!mPhoneNumber.startsWith("+")) {
          mPhoneNumber = "+86$mPhoneNumber"
      }
      // 移除所有非数字字符(除了开头的+)
      mPhoneNumber = mPhoneNumber.replace(Regex("[^+0-9]"), "")
      
  3. 修正依赖文件的语法错误
    你的build.gradle里firestore依赖少了闭合引号,修正后:

    implementation "com.google.firebase:firebase-auth:21.1.0"
    implementation "com.google.firebase:firebase-auth-ktx:21.1.0"
    implementation 'com.google.firebase:firebase-firestore:24.4.5'
    
  4. 额外验证步骤

    • 在调用PhoneAuthProvider.verifyPhoneNumber之前,打印mPhoneNumber的值,确认是正确的E.164格式
    • 确保测试用的是真实有效的手机号,并且在真机上运行(模拟器可能无法接收短信)

修正后的完整authUser函数示例

private fun authUser(){
    // 获取输入文本并清理格式
    val rawInput = mBinding.registerInputPhoneNumber.text.toString().trim()
    // 处理成E.164格式(以中国为例)
    mPhoneNumber = if (rawInput.startsWith("+")) {
        rawInput.replace(Regex("[^+0-9]"), "")
    } else {
        "+86${rawInput.replace(Regex("[^0-9]"), "")}"
    }

    // 打印验证格式
    Log.d(TAG, "处理后的手机号: $mPhoneNumber")

    val mPhoneNumberOptions = PhoneAuthOptions.newBuilder()
        .setPhoneNumber(mPhoneNumber)
        .setActivity(activity as RegisterActivity)
        .setTimeout(60L, TimeUnit.SECONDS)
        .setCallbacks(mCallBack)
        .build()
    PhoneAuthProvider.verifyPhoneNumber(mPhoneNumberOptions)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:05:16