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

Flutter Firebase报错:需提供multiFactorInfo,如何从firebase_auth获取?

解决Firebase双因素认证中multiFactorInfo的获取问题

要获取multiFactorInfo,你得从当前用户已注册的多因素认证方式列表里拿——Firebase会把用户添加过的所有双因素认证方式存在currentUser!.multiFactor.enrolledFactors里,这个列表里的每一项都是MultiFactorInfo对象。

具体操作步骤:

  • 先获取当前用户的已注册多因素认证列表
  • 根据业务场景选择对应的MultiFactorInfo(比如用户只绑定了一个手机号,直接取第一个;如果有多个,可以根据手机号或备注筛选)

修改你的代码如下:

final session = await FirebaseAuth.instance.currentUser!.multiFactor.getSession();
// 获取用户已注册的多因素认证方式列表
final enrolledFactors = FirebaseAuth.instance.currentUser!.multiFactor.enrolledFactors;
// 假设用户只绑定了一个手机号作为双因素认证方式,取第一个即可
// 若有多个,可按手机号/备注筛选,示例:
// final targetFactor = enrolledFactors.firstWhere((factor) => factor.phoneNumber == "目标手机号");
MultiFactorInfo? multiFactorInfo = globalIs2FactorAuth == true ? enrolledFactors.first : null;

await FirebaseAuth.instance.verifyPhoneNumber(
        phoneNumber: globalIs2FactorAuth != true ? phone.toString() : null,
        multiFactorSession: globalIs2FactorAuth == true ? session : null,
        multiFactorInfo: multiFactorInfo,
        timeout: Duration(seconds: 60),
        verificationCompleted: verificationCompleted,
        verificationFailed: verificationFailed,
        codeSent: codeSent,
        codeAutoRetrievalTimeout: codeAutoRetrievalTimeout)
    .then((value) {

注意:

  • enrolledFactors仅包含用户已成功添加的多因素认证方式,所以双因素认证流程启动前,用户必须先完成至少一种多因素方式的绑定(比如先绑定手机号),否则列表为空,需先引导用户添加。
  • 若支持用户绑定多个手机号,务必做好筛选,确保拿到的是用户当前要验证的那一项对应的MultiFactorInfo。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 11:22:53