Как выполнять проверку OTP каждый раз в базе данных Firebase Realtime?

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

Проблема, с которой я столкнулся, заключается в том, что после выхода из системы я хочу снова отправить OTP на номер, введенный пользователем, но вместо этого он проверяет номер и автоматически открывает действие. Может кто-нибудь мне помочь ???

Пожалуйста, пройдите с этим отвечать

yashkal 15.03.2018 06:28

при выходе из системы установите флаг, пользователь выходит из системы, а время входа в систему снова проверьте флаг и работайте соответственно

Shubham Jain 15.03.2018 06:29
0
2
3 559
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Этот метод может отправить OTP на ваш номер Mo.

    PhoneAuthProvider.getInstance().verifyPhoneNumber(
    phoneNumber,        // Phone number to verify
    60,                 // Timeout duration
    TimeUnit.SECONDS,   // Unit of timeout
    this,               // Activity (for callback binding)
    mCallbacks);  

Вам требуется перезвонить, чтобы получить ответ

    mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {

@Override
public void onVerificationCompleted(PhoneAuthCredential credential) {
    // This callback will be invoked in two situations:
    // 1 - Instant verification. In some cases the phone number can be instantly
    //     verified without needing to send or enter a verification code.
    // 2 - Auto-retrieval. On some devices Google Play services can automatically
    //     detect the incoming verification SMS and perform verification without
    //     user action.
    Log.d(TAG, "onVerificationCompleted:" + credential);

    signInWithPhoneAuthCredential(credential);
}

@Override
public void onVerificationFailed(FirebaseException e) {
    // This callback is invoked in an invalid request for verification is made,
    // for instance if the the phone number format is not valid.
    Log.w(TAG, "onVerificationFailed", e);

    if (e instanceof FirebaseAuthInvalidCredentialsException) {
        // Invalid request
        // ...
    } else if (e instanceof FirebaseTooManyRequestsException) {
        // The SMS quota for the project has been exceeded
        // ...
    }

    // Show a message and update the UI
    // ...
}

@Override
public void onCodeSent(String verificationId,
                       PhoneAuthProvider.ForceResendingToken token) {
    // The SMS verification code has been sent to the provided phone number, we
    // now need to ask the user to enter the code and then construct a credential
    // by combining the code with a verification ID.
    Log.d(TAG, "onCodeSent:" + verificationId);

    // Save verification ID and resending token so we can use them later
    mVerificationId = verificationId;
    mResendToken = token;

    // ...
}};

И для проверки вызова OTP ниже метод

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


 private void signInWithPhoneAuthCredential(PhoneAuthCredential credential) {
mAuth.signInWithCredential(credential)
        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                    // Sign in success, update UI with the signed-in user's information
                    Log.d(TAG, "signInWithCredential:success");

                    FirebaseUser user = task.getResult().getUser();
                    // ...
                } else {
                    // Sign in failed, display a message and update the UI
                    Log.w(TAG, "signInWithCredential:failure", task.getException());
                    if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) {
                        // The verification code entered was invalid
                    }
                }
            }
        });}

Я создал приложение для Android, и я хочу проверить otp только один раз (предположим, что если у одного и того же человека есть 2 сотовых телефона и он хочет играть в приложение со вторым телефоном, тогда номер должен проверяться автоматически из firebase, и otp не должен отправляться на тот же номер) помогите мне с этим пожалуйста.

Mohit Bhardwaj 15.03.2018 07:38

Я думаю, что это невозможно, если вы хотите снова войти в систему, тогда вы должны войти в систему с помощью номера телефона или пароля электронной почты, а затем каждый раз, когда firebase отправляет OTP и проверяет его снова

Chetan Shelake 15.03.2018 08:36

Я хочу проверить, есть ли номер телефона в firebase или нет, в противном случае доступ не должен предоставляться для следующего действия, и если номер есть, доступ должен быть автоматическим

Mohit Bhardwaj 15.03.2018 09:45

нужно добавить кнопку домой на панель myapp и вызвать активность из этого

Mohit Bhardwaj 15.03.2018 09:52

Другие вопросы по теме