Войти с помощью номера телефона firebase

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

Я хочу зарегистрировать пользователя с Имя пользователя и пароль

Нужен код для android

1
0
4 305
3

Ответы 3

войти в 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);
})

Дело в том, как войти в систему, как если бы в электронной почте есть методы для входа в систему, но их нет в аутентификации по телефону.

user10122020 31.07.2018 18:09

Для этого нет решения, Google говорит людям использовать код в качестве пароля. Что вы можете сделать, так это иметь только один экран для регистрации и входа в систему. Когда FirebaseAuth.getInstance().getCurrentUser() возвращает null, это означает, что вы должны зарегистрироваться / войти в систему пользователя таким же образом, для обоих вариантов требуется код / ​​пароль, который может иметь только владелец номера телефона. Если вам действительно нужен телефон и пароль для входа в систему, вы можете сделать что-то вроде это

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