簡體   English   中英

Firebase 身份驗證,驗證手機身份驗證時崩潰,android

[英]Firebase Auth, crashing on verify phone auth, android

我的應用程序在驗證手機身份驗證時崩潰,成功接收短信但在單擊驗證按鈕時崩潰,並非所有設備,來自 Play 商店的 20% 設備都崩潰了。 這是來自 Play 管理中心的日志。

java.lang.IllegalArgumentException: 
  at com.google.android.gms.common.internal.Preconditions.checkArgument (Preconditions.java:9)
  at com.google.firebase.auth.PhoneAuthCredential.<init> (PhoneAuthCredential.java:60)
  at com.google.firebase.auth.PhoneAuthCredential.zza (PhoneAuthCredential.java:10)
  at com.google.firebase.auth.PhoneAuthProvider.getCredential (PhoneAuthProvider.java:2)
  at com.udaan.recstudentportalV2.VerifyMobile.matchOtp (VerifyMobile.java:2)
  at com.udaan.recstudentportalV2.VerifyMobile.access$200 (VerifyMobile.java:2)
  at com.udaan.recstudentportalV2.VerifyMobile$3.onClick (VerifyMobile.java:2)
  at android.view.View.performClick (View.java:7862)
  at android.widget.TextView.performClick (TextView.java:15004)
  at com.google.android.material.button.MaterialButton.performClick (MaterialButton.java:3)
  at android.view.View.performClickInternal (View.java:7831)
  at android.view.View.access$3600 (View.java:879)
  at android.view.View$PerformClick.run (View.java:29359)
  at android.os.Handler.handleCallback (Handler.java:883)
  at android.os.Handler.dispatchMessage (Handler.java:100)
  at android.os.Looper.loop (Looper.java:237)
  at android.app.ActivityThread.main (ActivityThread.java:8167)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:496)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1100)

任何幫助都將不勝感激。

通過重新創建該問題已解決。 當用戶在發送 OTP 之前單擊驗證按鈕時會發生這種情況。 在調用 getCredential() 方法之前初步檢查是否發送了 OTP 將有助於糾正此問題。

按照我使用發送 otp 和 firebase 的方式,它工作得很好

 private PhoneAuthProvider.OnVerificationStateChangedCallbacks
        verificationCallbacks;

 //On Create
 Send_Number_tofirebase(phoneNumber);

     public void Send_Number_tofirebase(String phoneNumber){
    setUpVerificatonCallbacks();
    PhoneAuthProvider.getInstance().verifyPhoneNumber(
            phoneNumber,
            60,
            TimeUnit.SECONDS,
            this,
            verificationCallbacks);
}


    private void setUpVerificatonCallbacks() {
   Functions.Show_loader(this,false,true);
    verificationCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {

                @Override
                public void onVerificationCompleted(PhoneAuthCredential credential) {

                       Functions.cancel_loader();
                        signInWithPhoneAuthCredential(credential);

                }

                @Override
                public void onVerificationFailed(FirebaseException e) {
                    Functions.cancel_loader();

                    Log.d("response",e.toString());
                    Toast.makeText(Login_Phone_A.this, "Enter Correct Number.", Toast.LENGTH_SHORT).show();
                    if (e instanceof FirebaseAuthInvalidCredentialsException) {
                        // Invalid request
                    } else if (e instanceof FirebaseTooManyRequestsException) {
                        // SMS quota exceeded
                    }
                }

                @Override
                public void onCodeSent(String verificationId, PhoneAuthProvider.ForceResendingToken token) {

                    Functions.cancel_loader();

                    phoneVerificationId = verificationId;
                    resendToken = token;
                    sendtotxt.setText("Send to ( "+phoneNumber+" )");
                    viewFlipper.setInAnimation(Login_Phone_A.this, R.anim.in_from_right);
                    viewFlipper.setOutAnimation(Login_Phone_A.this, R.anim.out_to_left);
                    viewFlipper.setDisplayedChild(1);

                }
            };
}

聽到驗證按鈕按下

 public void verifyCode(View view) {
String code=""+digit1.getText().toString()+digit2.getText().toString()+digit3.getText().toString()+digit4.getText().toString()+digit5.getText().toString()+digit6.getText().toString();
if(!code.equals("")){
   Functions.Show_loader(this,false,true);
   PhoneAuthCredential credential =
           PhoneAuthProvider.getCredential(phoneVerificationId, code);
   signInWithPhoneAuthCredential(credential);
}else {
    Toast.makeText(this, "Enter the Correct varification Code", Toast.LENGTH_SHORT).show();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM