Я создал приложение в студии Android и связал его с базой данных Firebase Realtime. Я использовал его службу уведомлений, чтобы отправить OTP для аутентификации мобильного телефона пользователя.
Проблема, с которой я столкнулся, заключается в том, что после выхода из системы я хочу снова отправить OTP на номер, введенный пользователем, но вместо этого он проверяет номер и автоматически открывает действие. Может кто-нибудь мне помочь ???
при выходе из системы установите флаг, пользователь выходит из системы, а время входа в систему снова проверьте флаг и работайте соответственно
Этот метод может отправить 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 не должен отправляться на тот же номер) помогите мне с этим пожалуйста.
Я думаю, что это невозможно, если вы хотите снова войти в систему, тогда вы должны войти в систему с помощью номера телефона или пароля электронной почты, а затем каждый раз, когда firebase отправляет OTP и проверяет его снова
Я хочу проверить, есть ли номер телефона в firebase или нет, в противном случае доступ не должен предоставляться для следующего действия, и если номер есть, доступ должен быть автоматическим
нужно добавить кнопку домой на панель myapp и вызвать активность из этого
Пожалуйста, пройдите с этим отвечать