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



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

我使用以下函数来验证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();
}
}

我得到的错误是" firebaseautheexception: sms代码已过期,请重新发送验证码以再次验证。">

我是新的扑动和Firebase,所以在解决这个问题的任何帮助将非常感激。

这里是我发现的一些事情,也许它们会起作用:

  • 检查Firebase控制台,确保正在验证的电话号码正确设置,并且SMS代码正在发送到正确的号码。

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

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

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

解决方案本身就是一个错误。您必须在代码过期之前输入代码。当您获得代码时,请尝试验证otp,因为它显示">I/flutter (9598): error on firebaseautheexception: [firebase_auth/session-expired]短信代码已过期。请重新发送验证码再试一次。"。

相关内容

最新更新