У меня есть app, где пользователь регистрируется с Вашим номером телефона используя FirebasAuth... Идея состоит в том, чтобы производить связь автоматически. Как я могу делать для того, чтобы, когда пользователь вновь использует app (даже app закрылся), он не должен регистрировать снова? что это посылает прямо в Начальную страницу, проверив, что это число уже существует. Там этот мой код функционирует хорошо....... с уже большое спасибо
private void verifySignInCode(){
String code = editTextCode.getText().toString();
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(codeSent, code);
signInWithPhoneAuthCredential(credential);
}
private void signInWithPhoneAuthCredential(PhoneAuthCredential credential) {
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
//here you can open new activity
Toast.makeText(getApplicationContext(),
"Login Successfull", Toast.LENGTH_LONG).show();
Intent intent = new Intent(Loading.this,Welcome.class);
startActivity(intent);
} else {
if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) {
Toast.makeText(getApplicationContext(),
"Incorrect Verification Code ", Toast.LENGTH_LONG).show();
}
}
}
});
}
private void sendVerificationCode(){
String phone = editTextPhone.getText().toString();
if(phone.isEmpty()){
editTextPhone.setError("Phone number is required");
editTextPhone.requestFocus();
return;
}
if(phone.length() < 10 ){
editTextPhone.setError("Please enter a valid phone");
editTextPhone.requestFocus();
return;
}
PhoneAuthProvider.getInstance().verifyPhoneNumber(
phone, // Phone number to verify
60, // Timeout duration
TimeUnit.SECONDS, // Unit of timeout
this, // Activity (for callback binding)
mCallbacks); // OnVerificationStateChangedCallbacks
}
PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) {
}
@Override
public void onVerificationFailed(FirebaseException e) {
}
@Override
public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) {
super.onCodeSent(s, forceResendingToken);
codeSent = s;
}
};
}
В Activity, который у тебя есть seteado, как launcher ты будешь должен проверять, есть ли пользователь logeado или нет.
Только ты должен делать следующее:
import com.google.firebase.auth.FirebaseAuth;
public class MyActivity extends Activity {
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
mAuth = FirebaseAuth.getInstance();
if (mAuth.getCurrentUser() == null){
//No estas logeado, debes ir a la pantalla de login
//Metele un finish() a este Activity para que no puedas volver dando back una vez en la pantalla de login
}else{
//Estas logeado!
}
}
}