Невозможно войти снова, если после проверки с помощью OTP firebase - PullRequest
0 голосов
/ 03 мая 2019

Я создал одну демонстрацию аутентификации с использованием телефонного номера. Я могу успешно проверить с OTP. Но когда я пытаюсь ввести снова, тот же номер OTP не приходит. Я удалил приложение и снова попытался подтвердить номер мобильного телефона, но произошло то же самое, OTP от Firebase не пришло. Я не знаю, что мне делать, чтобы снова получить OTP на зарегистрированный номер.

Вот мой код для проверки OTP:

public class VerifyOTP extends AppCompatActivity {

private String mVerificationId;
private EditText editTextCode;
private FirebaseAuth mAuth;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.verify_otp);

    mAuth = FirebaseAuth.getInstance();
    editTextCode = findViewById(R.id.editTextCode);

    Intent intent = getIntent();
    String mobile = intent.getStringExtra("mobile");
    sendVerificationCode(mobile);

    findViewById(R.id.buttonSignIn).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String code = editTextCode.getText().toString().trim();
            if (code.isEmpty() || code.length() < 6) {
                editTextCode.setError("Enter valid code");
                editTextCode.requestFocus();
                return;
            }

            verifyVerificationCode(code);
        }
    });

}

private void sendVerificationCode(String mobile) {
    PhoneAuthProvider.getInstance().verifyPhoneNumber("+91" + mobile,
            60, TimeUnit.SECONDS,
            this,
            mCallbacks);

}

private PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
    @Override
    public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) {

        String code = phoneAuthCredential.getSmsCode();

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

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

    @Override
    public void onCodeSent(String verificationId, PhoneAuthProvider.ForceResendingToken forceResendingToken) {
        super.onCodeSent(verificationId, forceResendingToken);
        Log.d("Oncode sent",  verificationId);
        mVerificationId = verificationId;

    }
};


private void verifyVerificationCode(String code) {

    PhoneAuthCredential credential = PhoneAuthProvider.getCredential(mVerificationId, code);

    signInWithPhoneAuthCredential(credential);
}

private void signInWithPhoneAuthCredential(PhoneAuthCredential credential) {
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(VerifyOTP.this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        Toast.makeText(VerifyOTP.this, "Success", Toast.LENGTH_SHORT).show();
                    }
                    else {
                        Toast.makeText(VerifyOTP.this, "Error", Toast.LENGTH_SHORT).show();
                        String message = "Somthing is wrong, we will fix it soon...";

                        if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) {
                            message = "Invalid code entered...";
                        }

                        Snackbar snackbar = Snackbar.make(findViewById(R.id.parent), message, Snackbar.LENGTH_LONG);
                        snackbar.setAction("Dismiss", new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {

                            }
                        });
                        snackbar.show();
                    }
                }
            });
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...