@Artutit

Как сделать регистрацию через номер телефона?

Public class PhoneNumberActivity extends AppCompatActivity {
private Button buttonLog,buttonReg;
private EditText numberVery,smsVery;

private FirebaseAuth mAuth;
private String verificationID;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_phone_number);

buttonLog=(Button) findViewById(R.id.buttonLog);
buttonReg=(Button) findViewById(R.id.buttonReg);
numberVery=(EditText) findViewById(R.id.numberVery);
smsVery=(EditText) findViewById(R.id.smsVery);
mAuth=FirebaseAuth.getInstance();

buttonReg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (TextUtils.isEmpty(numberVery.getText().toString()))
{
Toast.makeText(PhoneNumberActivity.this, "code", Toast.LENGTH_SHORT).show();
}
else {
String phoneNumber = numberVery.getText().toString();
sendvericationcode();
}
}
});
buttonLog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (TextUtils.isEmpty( smsVery.getText().toString()))

{
Toast.makeText(PhoneNumberActivity.this, "codevfdff", Toast.LENGTH_SHORT).show();
}
else

verifycode(otp.getText().toString());

}
});
}

private void sendvericationcode(String phoneNumber) {
PhoneAuthOptions options =
PhoneAuthOptions.newBuilder(mAuth)
.setPhoneNumber("+7"+phoneNumber) // Phone number to verify
.setTimeout(60L, TimeUnit.SECONDS) // Timeout and unit
.setActivity(this) // Activity (for callback binding)
.setCallbacks(mCallbacks) // OnVerificationStateChangedCallbacks
.build();
PhoneAuthProvider.verifyPhoneNumber(options);
}

private PhoneAuthProvider.OnVerificationStateChangedCallbacks
mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {

@Override
public void onVerificationCompleted(@NonNull PhoneAuthCredential credential)
{

final String code=credential.getSmsCode();
if (code!=null) {

verifycode(code);
}
}

@Override
public void onVerificationFailed(@NonNull FirebaseException e) {
Toast.makeText(PhoneNumberActivity.this, "Ошибка верификации", Toast.LENGTH_SHORT).show();

}

@Override
public void onCodeSent(@NonNull String s,
@NonNull PhoneAuthProvider.ForceResendingToken token)
{
super.onCodeSent(s,token);

verificationID=s;

}
};

private void verifycode(String Code) {
PhoneAuthCredential.credential=PhoneAuthProvider.getCredential(verificationID,Code);
signInbyCredentials(credential);

}
private void signInbyCredentials(PhoneAuthCredential credential){
FirebaseAuth firebaseAuth=FirebaseAuth.getInstance();
FirebaseAuth.signInWithCredential(credential)
.addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
if (task.isSuccessful()){
Toast.makeText(PhoneNumberActivity.this, "Wellcome!", Toast.LENGTH_SHORT).show();
startActivity(new Intent(PhoneNumberActivity.this,MainActivity.class));
}
}
});
}
}

Что тут исправить и в правильном ли направлении я пишу? credential и otp говорят красным как исправить эту ошибку?
  • Вопрос задан
  • 96 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы