一台设备中的电话身份验证Firebase错误

时间:2020-06-19 05:15:28

标签: android firebase firebase-authentication

我的应用具有用于用户注册和登录Firebase的电话身份验证方法的某些应用程序在某些设备上运行良好,但是在一个设备中,它仅在我第一次检查时才发送验证短信。之后,我什至从Firebase控制台中删除了该帐户,但是在再次注册该号码时它没有发送任何验证码。

public class phone_no_verification extends AppCompatActivity {
ProgressBar verify_progress;
    TextInputEditText verify_edittext;
    TextInputLayout verify_textInput;
   String mverificationID;
FirebaseAuth auth;
   static  String TAG;
SharedPreferences sp;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_phone_no_verification);
        verify_progress = findViewById(R.id.verify_progress);
        verify_edittext = findViewById(R.id.verify_edittext);
        verify_textInput = findViewById(R.id.verify_textinputLayout);



        auth = FirebaseAuth.getInstance();

        //getting Intent mobile number
        Intent intent = getIntent();
        String mobile = intent.getStringExtra("mobile_no");
        sendVerificationcode(mobile);



        //Entering code manually
        findViewById(R.id.verify_Button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String code = verify_edittext.getText().toString().trim();
                if(code.isEmpty() || code.length() < 6){
                    verify_textInput.setError("Enter Valid code");
                }
                else{
                verifyVerificationCode(code);}
            }
        });

    }

    private void sendVerificationcode(String mobile) {
        PhoneAuthProvider.getInstance().verifyPhoneNumber
                ("+91" + mobile,60, TimeUnit.SECONDS,
                        TaskExecutors.MAIN_THREAD,mcallbacks);
    }

    //callback to detect verification status
PhoneAuthProvider.OnVerificationStateChangedCallbacks mcallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
        @Override
        public void onCodeSent(@NonNull String s, @NonNull PhoneAuthProvider.ForceResendingToken forceResendingToken) {
            super.onCodeSent(s, forceResendingToken);
mverificationID = s;
        }

        @Override
        public void onVerificationCompleted(@NonNull PhoneAuthCredential phoneAuthCredential) {
            Log.d(TAG, "onVerificationCompleted:" + phoneAuthCredential);

            String code = phoneAuthCredential.getSmsCode();

if(code != null){
    verify_edittext.setText(code);
    verifyVerificationCode(code);
}
        }

        @Override
        public void onVerificationFailed(@NonNull FirebaseException e) {
            Toast.makeText(phone_no_verification.this, e.getMessage(), Toast.LENGTH_LONG).show();

        }
    };


    private void verifyVerificationCode(String code) {
        PhoneAuthCredential credential = PhoneAuthProvider.getCredential(mverificationID,code);

        //signing user
        signInWithPhoneAuthCredential(credential);
    }

    private void signInWithPhoneAuthCredential(PhoneAuthCredential credential) {
    auth.signInWithCredential(credential).addOnCompleteListener(phone_no_verification.this
            , new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                  if(task.isSuccessful()){
Intent intent = new Intent(phone_no_verification.this, Basic_activity.class);
                      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

startActivity(intent);
                      sp = getSharedPreferences("login",MODE_PRIVATE);
                      sp.edit().putBoolean("isAutheticated",true).apply();
                  }
                  else{
                      String message = "Somthing is wrong, we will fix it soon...";
                      if(task.getException() instanceof FirebaseAuthInvalidCredentialsException){
                          message = "Invalid code Entered..";
                      }
                      else if(task.getException() instanceof FirebaseAuthUserCollisionException){
                          message = "User Already Exists";
                      }

Toast.makeText(phone_no_verification.this,message,Toast.LENGTH_LONG).show();

                  }


                }
            });

    }
}

0 个答案:

没有答案