2016-12-23 2 views
0

Это мой Google Аутентифицировать активность:Зачем createUserWithEmailAndPassword установить текущую пользовательскую переменную (getCurrentUser())?

public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
    if(firebaseAuth.getCurrentUser() != null){ 
     startActivity(new Intent(GoogleAuthentication.this, ChatRoomActvity.class)); 
    } else { 
     googleSignIn(); 
    } 
} 

Тогда у меня есть регистровая активность для пользователей, которые хотят, чтобы зарегистрироваться с электронной почтой и передать. Вот фрагмент кода:

mAuth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() { 
    @Override 
    public void onComplete(@NonNull Task<AuthResult> task) { 
     if(task.isSuccessful()){ 
      mProgress.dismiss(); 
     } else { 
      Toast.makeText(RegisterActivity.this, "Task not successfull", Toast.LENGTH_LONG).show(); 
     } 
    } 
}); 

Войти экран имеет 2 варианта 1. Google Войти 2. Регистрация

Проблема заключается в том, когда пользователь может выбрать # 2 говорят регистрацию, он вводит пользователь/пасс и mAuth.createUserWithEmailAndPassword добавляет этот пользователь/pass к firebase auth db, и он также устанавливает этого пользователя в качестве текущего пользователя. Я не знаю, почему он устанавливает пользователя в качестве текущего пользователя, я просто вызвал mAuth.createUserWithEmailAndPassword не signInWithEmailAndPassword.

Теперь после игры с опцией №2, когда пользователь возвращается к # 1, он вступает в систему непосредственно в чате, потому что firebaseAuth.getCurrentUser() != null.

В принципе, я хочу, чтобы firebase .createUserWithEmailAndPassword не должен устанавливать текущую пользовательскую переменную. firebaseAuth.getCurrentUser() должно быть null, пока я не позвоню signInWithEmailAndPassword.

+0

Ответ от qbix имеет право на это: создание пользователя автоматически подписывает этого пользователя. Вы могли бы немедленно сразу же подписать пользователя. Но, если честно: заставить пользователя сразу же вводить свои учетные данные, как субоптимальный пользовательский опыт, мне кажется. –

ответ

1

Вам нужно будет пересмотреть свой дизайн. Документация createUserWithEmailAndPassword() объясняет, что метод:

пытается создать новую учетную запись пользователя с указанным адресом электронной почты и паролем . В случае успеха он также подписывает пользователя в приложении

+0

cool, я как бы сохранил состояние в Db каждый раз, когда я вхожу в систему .... Итак, перед регистрацией я проверяю состояние вместе с getcurrentUser .., которые помогают мне принимать правильное решение, если пользователь только что подписал или фактически подписал :) спасибо – user7327850

Смежные вопросы