gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:09:36 25 4
gpt4 key购买 nike

首次调用此 (user = firebaseAuth.getCurrentUser();) 后,Firebase 用户返回 null。

首次安装应用程序时,firebaseAuth.getCurrentUser() 返回用户,但当它从第一个 Activity 移动到另一个 Activity 时,之后会调用“sigh Out”按钮firebaseAuth.getCurrentUser() 每次都返回 null。

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);

loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

progressDialog.setMessage("Please Wait");
progressDialog.show();

Log.i("Userrrr", String.valueOf(user));

if(validate()) {
if (user != null) {
firebaseAuth.signInWithEmailAndPassword(userName.getText().toString().trim(), pwd.getText().toString().trim()).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Intent intent = new Intent(logIn.this, WelcomePage.class);
startActivity(intent);
Toast.makeText(getApplicationContext(), "Successful", Toast.LENGTH_SHORT).show();
progressDialog.dismiss();
} else {
Toast.makeText(getApplicationContext(), "Failed", Toast.LENGTH_SHORT).show();
progressDialog.dismiss();
}
}
});
} else {
Toast.makeText(getApplicationContext(), "Failed", Toast.LENGTH_SHORT).show();
progressDialog.dismiss();
}
}
}
});

signUpHere.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
}
});

}

private Boolean validate() {

Boolean result = false;

String name = userName.getText().toString();
String password = pwd.getText().toString();

if(name.isEmpty() || password.isEmpty()) {
Toast.makeText(getApplicationContext(), "Enter all details", Toast.LENGTH_SHORT).show();
} else {
result = true;
}

return result;

}

}

当第一次调用firebaseAuth.getCurrentUser()时,它是

returning (2019-08-29 00:08:14.561 8165-8165/com.example.firebaselogin I/Userrrr: com.google.firebase.auth.internal.zzk@44ffb65) but after the signOut is triggered from a next activity, firebaseAuth.getCurrentUser() is returning null everytime 2019-08-29 00:08:24.651 8165-8165/com.example.firebaselogin I/Userrrr: null``

最佳答案

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

关于java - firebase 用户在第一次调用后每次都会返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57698449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com