Firebase电话身份验证检测到错误的短信代码

时间:2019-12-27 17:03:39

标签: firebase flutter firebase-authentication

我认为这不是特定于平台的,但是我正在Flutter应用程序中实现Firebase电话身份验证,因此我不确定如何检测到有人输入了无效的SMS代码。在verifyPhoneNumber()Firebase.instance方法的范围内,我在哪里可以检测到?会在verificationFailed()回调中处理此问题,还是在尝试使用signInWithCredential()登录并失败后才知道?

-编辑-

经过进一步的调查,似乎没有异常会被抛出,唯一发生的是signInWithCredential()将返回空的user对象。我能想到的最好的解决方案是等待5秒钟(或其他时间),看看是否得到非null的user。有人有更好的主意吗?

此外,请注意,我的开发设备没有单元连接,因此我正在通过Firebase控制台使用伪造的测试号码。这意味着将不会调用verificationCompleted()回调,而会调用codeAutoRetrievalTimeout(),从而强制手动输入SMS代码。希望能提供更好的背景。

1 个答案:

答案 0 :(得分:0)

经过更多实验,我发现signInWithCredential()中将引发错误。以下是一些特定于飞镖的代码,展示了其工作原理:

AuthResult authResult = await _firebaseAuth.signInWithCredential(_authCredential).catchError((error) {
    // do something with the error
    print(error);
});

Flutter中错误代码为PlatformException(ERROR_INVALID_VERIFICATION_CODE, The sms verification code used to create the phone auth credential is invalid. Please resend the verification code sms and be sure use the verification code provided by the user., null)