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

(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``


翻过高山走不出你
浏览 125回答 2
2回答

largeQ

如我所见,您在签署用户之前检查用户是否为空。因此,当用户注销并再次尝试登录时,现在用户为空。根据你的情况,如果用户不为null,则全部登录,其他则不会。由于用户为空,它总是失败并且用户无法登录。删除该条件,您就可以开始了。

天涯尽头无女友

每当您注销用户并调用代码时FirebaseAuth.getInstance().signOut();它将清除由 firebase 维护的会话。但如果signOut()不调用,那么会话仍然存在,并且用户不会为空。所以每当你打电话时signOut(),你都会得到 user null。因此,只需删除user != null条件,您就可以登录。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java