(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條經驗 獲得超8個贊
如我所見,您在簽署用戶之前檢查用戶是否為空。因此,當用戶注銷并再次嘗試登錄時,現在用戶為空。根據你的情況,如果用戶不為null,則全部登錄,其他則不會。由于用戶為空,它總是失敗并且用戶無法登錄。刪除該條件,您就可以開始了。

天涯盡頭無女友
TA貢獻1831條經驗 獲得超9個贊
每當您注銷用戶并調用代碼時
FirebaseAuth.getInstance().signOut();
它將清除由 firebase 維護的會話。但如果signOut()
不調用,那么會話仍然存在,并且用戶不會為空。所以每當你打電話時signOut()
,你都會得到 user null
。因此,只需刪除user != null
條件,您就可以登錄。
添加回答
舉報
0/150
提交
取消