Привет всем, я пытаюсь выполнить аутентификацию телефона для входа в систему и использовать регистрацию с адресом электронной почты и паролем, когда пользователь зарегистрирован, он сохраняет адрес электронной почты и пароль в пользователях firebase по умолчанию, а также добавляет новый объект firebase с дополнительной информацией о пользователе Телефон, информация об автомобиле , Имя
теперь для входа в систему пользователь вводит свой телефон, но (но) я не хочу, чтобы какой-либо пользователь, который не был зарегистрирован до того, чтобы войти и пройти аутентификацию, я хочу проверить, существует ли введенный номер телефона пользователя в базе данных
Я не могу использовать UID, потому что пользователь еще не вошел в систему, что делать?
Усама, во время регистрации вам необходимо аутентифицировать пользователя по телефону (+ xxxxxxxxxx).
Следующим незамедлительным шагом вам будет привязать этот телефон к электронной почте и паролю.
Допустим, пользователь вышел из системы. И он хочет снова войти в систему.
1) например он находится в представлении номера телефона, и он вводит свой номер телефона (+ xxxxxxxxxx), после того, как он правильно вводит код sms, вам необходимо проверить, связан ли этот телефон с любыми другими учетными данными пароля электронной почты
В FIRAuth auth signInWithCredential с использованием телефона вы можете проверить FIRAdditionalUserInfo на предмет «телефон» и «пароль», чтобы узнать, связан ли он уже с паролем, и предложить ему войти в систему.
2) например он выбирает вход (он должен запрашивать только его адрес электронной почты и пароль)
Обновления:
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();
// ...get the user.providerData and FIRAdditionalUserInfo providerID "password"
} 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
}
}
}
});
}
Спасибо loooot, но не могли бы вы дать мне пример того, как реализовать то, что вы сказали, я был бы признателен
@Osama обновил код и некоторые подсказки. Предлагаем вам разместить точку останова в FirebaseUser user = task.getResult (). GetUser (); и проверьте значение внутри этих ключевых слов "// ... получить user.providerData и FIRAdditionalUserInfo providerID" пароль ""
У тебя есть код? Пожалуйста, добавьте это к своему вопросу