我正在使用 Firebase Phone Authentification 来验证用户帐户。当我尝试使用错误的验证码进行身份验证时,我收到IllegalArgumentException。有没有办法在不使用try
catch
块的情况下解决这个问题?
以下是异常消息:
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
中使用错误的验证码,并希望收到错误消息而不是异常。
答案 0 :(得分:3)
致电PhoneAuthProvider.getCredential(...)
会返回PhoneAuthCredential object,其定义为:
包含电话号码和验证信息以进行身份验证。
因此getCredential()
无法返回错误消息。相反,如果您提供的验证/凭据信息有问题,它会抛出异常。
答案 1 :(得分:1)
我遇到了同样的错误,只需添加SHA证书。错误会消失。
答案 2 :(得分:0)
它返回一个异常,因此目的应该是捕获它在调试控制台中引发的异常。为此,我将代码的一部分包裹在try catch中,然后将其吐给目标用户,而不是普通的崩溃(最终用户看不到)。
喜欢这个...
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();
}
}
答案 3 :(得分:0)
我遇到了同样的问题,并已解决。实际上,您需要检查verifyId并且代码不为空
谢谢。