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

React Native中使用Firebase手机号认证触发TypeError错误求助

Firebase手机号认证报错:TypeError: undefined is not an object (evaluating 'verifier.verify')

错误原因

你错误调用了PhoneAuthProvider实例的verifyPhoneNumber方法,该方法并非Firebase Auth的合法API。Firebase v9+中,手机号验证需要使用从firebase/auth导入的独立verifyPhoneNumber函数,PhoneAuthProvider仅用于后续生成登录凭证。

修正后的代码

import {
  getAuth,
  createUserWithEmailAndPassword,
  verifyPhoneNumber,
  PhoneAuthProvider,
  signInWithCredential,
  onAuthStateChanged,
} from "firebase/auth";

const auth = getAuth();

async function handleVerifyPhoneNumber(phoneNumber) {
  try {
    // 使用独立的verifyPhoneNumber函数,传入auth实例和手机号
    const confirmation = await verifyPhoneNumber(auth, phoneNumber);
    setConfirm(confirmation);
  } catch (error) {
    console.error(error);
  }
}
<Button
  title="Verify Phone Number"
  onPress={() => handleVerifyPhoneNumber("你的手机号")}
/>

补充说明

  • 确保手机号格式正确:需包含国家码(如+8613xxxxxxxxx),否则会触发验证失败。
  • React Native环境无需额外验证器,直接调用verifyPhoneNumber即可;若为Web环境,还需配置RecaptchaVerifier。
  • 后续验证验证码时,再使用PhoneAuthProvider生成凭证:
// 假设code是用户输入的验证码,confirmation是之前保存的ConfirmationResult
const credential = PhoneAuthProvider.credential(confirmation.verificationId, code);
await signInWithCredential(auth, credential);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 02:19:57