Firebase:如何检查用户是否已登录?

dsh*_*rew 16 android firebase firebase-authentication

Android Firebase的新蜜蜂; 我正在尝试Firebase身份验证,我正在尝试检查用户是否已登录以执行此操作我正在使用此简单代码:

null != mAuth.getCurrentUser();
Run Code Online (Sandbox Code Playgroud)

而这个返回true虽然我没有登录,但我已经启用annonymous登录,我认为这可能是问题,但是当我检查 mAuth.getCurrentUser().isAnonymous()我得到false.

检查mAuth.getCurrentUser()IDE显示: 在此输入图像描述

这里有任何指示.

小智 17

我觉得它的作用如下:

FirebaseAuth.getInstance().getCurrentUser()
Run Code Online (Sandbox Code Playgroud)

null如果用户未登录,则应返回.


ata*_*ulm 15

我遇到了类似的问题,退出Firebase还不够 - 它会再次自动登录.

使用GoogleSignInApi注销也是必要的:

firebaseAuth.signOut();
Auth.GoogleSignInApi.signOut(apiClient);
Run Code Online (Sandbox Code Playgroud)


Ril*_*nda 5

要检查用户是否登录:

 private FirebaseAuth firebaseAuth;
 FirebaseAuth.AuthStateListener mAuthListener;
Run Code Online (Sandbox Code Playgroud)

然后在您的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();
}
                }


            };
Run Code Online (Sandbox Code Playgroud)

可以在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);
    }
Run Code Online (Sandbox Code Playgroud)

现在有关您的登录信息:设置了布尔值以检查用户登录状态后:(默认布尔值设置为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);
Run Code Online (Sandbox Code Playgroud)

如果用户成功登录,请将其设置为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();

                        }
Run Code Online (Sandbox Code Playgroud)

然后,如果用户登录,则将节点设置为False;如果用户未成功登录,则将节点设置为false。