Firebase: как проверить, вошел ли пользователь в систему?

новая пчела Android Firebase; Я пробую аутентификацию Firebase, и я пытаюсь проверить, вошел ли пользователь в систему, чтобы сделать это, я использую этот простой код:

null != mAuth.getCurrentUser();

и это возвращает true хотя я не вошел в систему, но я включил annonymous login и я думал, что это может быть проблемой, но когда я проверяю mAuth.getCurrentUser().isAnonymous() Я false.

проверка mAuth.getCurrentUser() на IDE показывает это: enter image description here

любые направления здесь.

3 ответов


У меня была аналогичная проблема, и это было то, что выход из Firebase недостаточно - он снова автоматически войдет в систему.

необходимо также выйти с помощью GoogleSignInApi:

firebaseAuth.signOut();
Auth.GoogleSignInApi.signOut(apiClient);

Я думаю, что это работает как :

FirebaseAuth.getInstance().getCurrentUser()

Он должен вернуть null если пользователь не вошел в систему.


чтобы проверить, вошел ли пользователь в систему:

 private FirebaseAuth firebaseAuth;
 FirebaseAuth.AuthStateListener mAuthListener;

тогда в вашем onCreate:

     firebaseAuth = FirebaseAuth.getInstance();

      mAuthListener = new FirebaseAuth.AuthStateListener(){
                @Override
                public  void  onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth){
            FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
        if(user!=null){
        Intent intent = new Intent(LoginActivity.this, MainActivity.class);
        startActivity(intent);
        finish();
}
                }


            };

Это может быть создано в классе состояния auth или интерфейсе.Затем вы можете просто вызвать состояние auth или проверить, какое действие вы хотите проверить с помощью:

проверка состояния auth при выполнении действия:

 @Override
    protected void onStart() {
        super.onStart();
        firebaseAuth.addAuthStateListener(mAuthListener);
    }


    @Override
    protected void onResume() {
        super.onResume();
        firebaseAuth.addAuthStateListener(mAuthListener);
        }




    @Override
    protected void onStop() {
        super.onStop();
        firebaseAuth.removeAuthStateListener(mAuthListener);
    }

теперь о вашем входе в систему:после установки логических значений, чтобы проверить пользователь вошел в состояние: (по умолчанию булево значение false)

firebaseAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(LoginActivity.this, new OnCompleteListener<AuthResult>() {
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {
                            progressBar.setVisibility(View.GONE);
                            if (!task.isSuccessful()) {
//set a your boolean to false
current_user_db.setValue(false);

и если пользователь успешно вошел в систему,установите это свойство в true, а затем ваше намерение:

else {


String userid = firebaseAuth.getCurrentUser().getUid();
                            DatabaseReference current_user_db = FirebaseDatabase.getInstance().getReference("Users").child(userid);
                            current_user_db.setValue(true);
                            Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                            startActivity(intent);
                            finish();

                        }

затем ваш узел будет установлен в False, если пользователь вошел в систему или false, если пользователь не успешно вошел в систему.