android - 使用错误的验证码进行身份验证时出现异常

标签 android firebase firebase-authentication

我正在使用 Firebase Phone Authentication 来验证用户帐户。当我尝试使用错误的验证码进行身份验证时,我收到 IllegalArgumentException。有没有什么方法可以在不使用 try catch block 的情况下解决这个问题?

这是异常消息:

java.lang.IllegalArgumentException: Cannot create PhoneAuthCredential without either verificationProof, sessionInfo, or temporaryProof.
                                                                 at com.google.android.gms.common.internal.zzbq.checkArgument(Unknown Source)
                                                                 at com.google.firebase.auth.PhoneAuthCredential.<init>(Unknown Source)
                                                                 at com.google.firebase.auth.PhoneAuthProvider.getCredential(Unknown Source)
                                                                 at com.example.myApp.testFragment$3$4.onClick(testFragment.java:316)
                                                                 at android.view.View.performClick(View.java:5197)
                                                                 at android.view.View$PerformClick.run(View.java:20926)
                                                                 at android.os.Handler.handleCallback(Handler.java:739)
                                                                 at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                 at android.os.Looper.loop(Looper.java:145)
                                                                 at android.app.ActivityThread.main(ActivityThread.java:5951)
                                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                                 at java.lang.reflect.Method.invoke(Method.java:372)
                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)

这是我收到错误的行:

PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationCode, inputCode);

我故意在 inputCode 中使用错误的验证码,希望得到错误消息而不是异常。

最佳答案

它返回一个异常,所以目标应该是捕获它在调试控制台中抛出的异常。为此,我将该代码的一部分包装在一个 try catch 中,然后将其 Toast 出来供目标用户查看,而不是最终用户看不到的常见崩溃。

像这样...

private void verifyCode(String code) {
    try {
        PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationId, code);
        signInWithCredential(credential);
    }catch (Exception e){
        Toast toast = Toast.makeText(this, "Verification Code is wrong", Toast.LENGTH_SHORT);
        toast.setGravity(Gravity.CENTER,0,0);
        toast.show();
    }

}

关于android - 使用错误的验证码进行身份验证时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48118488/

相关文章:

android - 无法在 Android Chrome 中使用 MediaElementSource 和 AudioParam 接口(interface)淡入/淡出

用于 2d 游戏的 Android Canvas 或 Open GL ES?

java - 回收站适配器 onClick 项目出现问题

java - 使用Eclipse设置解析

Firebase Google用户未显示在Firebase控制台身份验证中

node.js - 如何使用 http POST 方法将当前用户(使用该应用程序的人)的 Firebase Id token 从 Flutter 应用程序发送到restapi?

javascript - Firebase Web SDK - 事务导致 ('child_added' 、 func.. 被调用

c# - 场景变化时鉴权失败

ios 每次都需要 reCAPTCHA 与/firestore auth (Flutter)

swift - 如果帐户不在身份验证数据库中,是否有任何方法可以禁用帐户创建?