Как войти в систему существующему пользователю, получив его номер телефона. Я не хочу отправлять подтверждение при входе в систему, потому что оно уже отправлено во время регистрации
Я хочу зарегистрировать пользователя с Имя пользователя и пароль
Нужен код для android
войти в firebase, подумать о базе данных firebase на phone-auth
// The test phone number and code should be whitelisted in the console.
String phoneNumber = "some_number";
String smsCode = "some_codes";
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
FirebaseAuthSettings firebaseAuthSettings = firebaseAuth.getFirebaseAuthSettings();
// Configure faking the auto-retrieval with the whitelisted numbers.
firebaseAuthSettings.setAutoRetrievedSmsCodeForPhoneNumber(phoneNumber, smsCode);
PhoneAuthProvider phoneAuthProvider = PhoneAuthProvider.getInstance();
phoneAuthProvider.verifyPhoneNumber(
phoneNumber,
60L,
TimeUnit.SECONDS,
this, /* activity */
new OnVerificationStateChangedCallbacks() {
@Override
public void onVerificationCompleted(PhoneAuthCredential credential) {
// Instant verification is applied and a credential is directly returned.
}
... /* other callbacks */
}
надеюсь это поможет.
Это означает, что вам нужно, чтобы у пользователя был пароль. Во время регистрации позвольте пользователю создать пароль или использовать полученный код в качестве пароля и сохранить его в узле в firebase. Во время нового входа в систему спросите у пользователя телефон и пароль и, если они совпадают, войдите в систему. Ваши данные будут выглядеть примерно так:
{
"login":{
"+1254655826":"123235"
"+4545492145":"password"
"+2154644833":"passwordHASH"
}
//you can also hash the password
}
Все, что вам теперь нужно сделать, это прослушать ссылочный логин / телефон, и если пароль совпадает с паролем, который вводит пользователь, или кодом, отправленным во время регистрации, вы входите в систему.
Для аутентификации по телефону см. Этот документ на базе firebase
Так что процесс будет
reference.child("login/" + phone).addListenerForSingleValueEvent(new ->{
if (dataSnapshot.getValue() != null){
//user exists
if (dataSnapshot.getValue().toString().matches(password)) //login successful
}else PhoneAuthProvider.getInstance()
.verifyPhoneNumber(phone,60,TimeUnit.SECONDS,this,mCallbacks);
})
Для этого нет решения, Google говорит людям использовать код в качестве пароля. Что вы можете сделать, так это иметь только один экран для регистрации и входа в систему. Когда FirebaseAuth.getInstance().getCurrentUser() возвращает null, это означает, что вы должны зарегистрироваться / войти в систему пользователя таким же образом, для обоих вариантов требуется код / пароль, который может иметь только владелец номера телефона. Если вам действительно нужен телефон и пароль для входа в систему, вы можете сделать что-то вроде это
Дело в том, как войти в систему, как если бы в электронной почте есть методы для входа в систему, но их нет в аутентификации по телефону.