(user = firebaseAuth.getCurrentUser();)Firebase 用户在第一次调用后返回 null 。当第一次安装应用程序时,它firebaseAuth.getCurrentUser()会返回用户,但是当它从第一个活动移动到另一个活动时,firebaseAuth.getCurrentUser()每次都会返回 null 之后调用 sigh Out 按钮。package com.example.firebaselogin;import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;import android.app.ProgressDialog;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.ProgressBar;import android.widget.TextView;import android.widget.Toast;import com.google.android.gms.tasks.OnCompleteListener;import com.google.android.gms.tasks.Task;import com.google.firebase.auth.AuthResult;import com.google.firebase.auth.FirebaseAuth;import com.google.firebase.auth.FirebaseUser;public class logIn extends AppCompatActivity { EditText userName, pwd; TextView signUpHere; Button loginButton; private FirebaseAuth firebaseAuth; //private FirebaseAuth.AuthStateListener listener; ProgressDialog progressDialog; FirebaseUser user; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_log_in); firebaseAuth = FirebaseAuth.getInstance(); progressDialog = new ProgressDialog(this); user = firebaseAuth.getCurrentUser(); userName = findViewById(R.id.userName); pwd = findViewById(R.id.pwd); signUpHere = findViewById(R.id.signUpHere); loginButton = findViewById(R.id.loginButton);当第firebaseAuth.getCurrentUser()一次被调用时,它是返回 (2019-08-29 00:08:14.561 8165-8165/com.example.firebaselogin I/Userrrr: com.google.firebase.auth.internal.zzk@44ffb65) 但在下一个活动触发注销后, firebaseAuth.getCurrentUser() 每次都会返回 null 2019-08-29 00:08:24.651 8165-8165/com.example.firebaselogin I/Userrrr: null``
2 回答
largeQ
TA贡献2039条经验 获得超7个赞
如我所见,您在签署用户之前检查用户是否为空。因此,当用户注销并再次尝试登录时,现在用户为空。根据你的情况,如果用户不为null,则全部登录,其他则不会。由于用户为空,它总是失败并且用户无法登录。删除该条件,您就可以开始了。
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
每当您注销用户并调用代码时
FirebaseAuth.getInstance().signOut();
它将清除由 firebase 维护的会话。但如果signOut()
不调用,那么会话仍然存在,并且用户不会为空。所以每当你打电话时signOut()
,你都会得到 user null
。因此,只需删除user != null
条件,您就可以登录。
添加回答
举报
0/150
提交
取消