繁体   English   中英

Flutter Firebase 即使发送和输入的 OTP 相同,OTP 验证仍失败

[英]Flutter Firebase OTP verification fails even though both sent and entered OTP are the same

我正在尝试使用 Firebase 在我的 Flutter 应用程序中实施 OTP 验证,但我面临验证失败的问题,即使发送和输入的 OTP 相同。

我正在使用以下 function 来验证 OTP:

void verifyOtp({
    required BuildContext context,
    required String verificationId,
    required String userOtp,
    required Function onSuccess,
  }) async {
    _isLoading = true;
    notifyListeners();
    try {
      PhoneAuthCredential creds = PhoneAuthProvider.credential(
          verificationId: verificationId, smsCode: userOtp);
      User? user = (await _firebaseAuth.signInWithCredential(creds)).user!;
      print('signwithcredential passed');
      if (user != null) {
        _uid = user.uid;
        onSuccess();
      }
    } on FirebaseAuthException catch (e) {
      print('failed Userotp: $userOtp');
      showSnackBar(context, e.message.toString());
      _isLoading = false;
      notifyListeners();
    }
  }

我得到的错误是“FirebaseAuthException:短信代码已过期请重新发送验证码以再次验证。”

我是 Flutter 和 Firebase 的新手,所以如果能帮助解决这个问题,我将不胜感激。

以下是我发现的一些可能会起作用的东西:

  • 检查 Firebase 控制台以确保被验证的电话号码设置正确并且短信代码发送到正确的号码。

  • 确保以正确的格式传递电话号码。

  • FirebaseAuthException 被正确捕获。 确保 catch 块内的消息被记录或显示给用户。

  • 确保依赖项和包已正确安装和导入。

解决方案本身就是您遇到的错误。 您必须在代码过期前输入代码。 收到代码后立即尝试验证 otp,因为它说“ I/flutter ( 9598): error on firebaseAuthexception: [firebase_auth/session-expired] 短信代码已过期。请重新发送验证代码以重试. ”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM