【问题标题】:Firebase phone auth detect wrong sms codeFirebase 电话身份验证检测到错误的短信代码
【发布时间】:2020-04-17 14:33:27
【问题描述】:

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

--编辑--

经过进一步调查,似乎不会抛出异常,唯一会发生的事情是signInWithCredential() 将返回一个空的user 对象。我能想到的最好的解决方案就是等待 5 秒(或什么),看看我们是否得到一个非空的user。有人有更好的想法吗?

另外,请注意,我的开发设备没有单元连接,因此我通过 Firebase 控制台使用了一个虚假的测试编号。这意味着不会调用verificationCompleted() 回调,而是调用codeAutoRetrievalTimeout(),从而强制手动输入短信代码。希望能提供一些更好的背景。

【问题讨论】:

    标签: firebase flutter firebase-authentication


    【解决方案1】:

    经过更多实验,我发现signInWithCredential() 中会抛出错误。下面是一些特定于 dart 的代码,展示了它是如何工作的:

    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)

    【讨论】:

    • 不,它仍然会被抛出
    • 那是因为它会自动登录,但不会重定向到主页
    猜你喜欢
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 2018-01-19
    相关资源
    最近更新 更多