为了账号安全,请及时绑定邮箱和手机立即绑定

firebase 用户每次第一次调用后都会返回 null

firebase 用户每次第一次调用后都会返回 null

翻过高山走不出你 2023-06-21 15:48:36
(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,则全部登录,其他则不会。由于用户为空,它总是失败并且用户无法登录。删除该条件,您就可以开始了。



查看完整回答
反对 回复 2023-06-21
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

每当您注销用户并调用代码时

FirebaseAuth.getInstance().signOut();

它将清除由 firebase 维护的会话。但如果signOut()不调用,那么会话仍然存在,并且用户不会为空。所以每当你打电话时signOut(),你都会得到 user null。因此,只需删除user != null条件,您就可以登录。


查看完整回答
反对 回复 2023-06-21
  • 2 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信