android - 当我的应用程序被销毁时,firebase 不会存储我的用户,它会跳过登录页面

标签 android firebase firebase-authentication

当我启动我的应用程序时,第一个页面是登录页面,在我成功登录后,新的 Intent 将我带到主菜单,旁边是我的用户名。当我正确地销毁应用程序时,用户名应该存储在主菜单中,但它删除了用户名并且是空的。特此附上我的登录代码。

private EditText PasswdEdit;
private EditText EmailEdit;

private Button LoginBtn;

private FirebaseAuth mAuth;

private FirebaseAuth.AuthStateListener mAuthStateListener;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_log_in);

    mAuth = FirebaseAuth.getInstance();

    PasswdEdit = findViewById(R.id.PasswdEdit);
    EmailEdit = findViewById(R.id.EmailEdit);
    LoginBtn = findViewById(R.id.LoginBtn);

    mAuthStateListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            if (firebaseAuth.getCurrentUser() != null)
            {
                startActivity(new Intent(LogIn.this,MainMenu.class).putExtra("UserName",EmailEdit.getText().toString()));

            }
        }
    };
    LoginBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startSingIn();
        }
    });

}

@Override
protected void onStart() {
    super.onStart();
    mAuth.addAuthStateListener(mAuthStateListener);
}

@Override
public void onBackPressed() {

}

private void startSingIn (){
    String email = EmailEdit.getText().toString();
    String passwd = PasswdEdit.getText().toString ();
    if(TextUtils.isEmpty(email) || TextUtils.isEmpty(passwd))
    {
        Toast.makeText(LogIn.this,"Fields are empty",Toast.LENGTH_LONG).show ();
    }
    else
    {
        mAuth.signInWithEmailAndPassword(email,passwd).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if(!task.isSuccessful()){
                    Toast.makeText(LogIn.this,"Please check your credentials",Toast.LENGTH_LONG).show ();
                }
                if (task.isSuccessful()) {
                    FirebaseUser userLogIn = mAuth.getCurrentUser();
                }
            }
        });

    }

}

最佳答案

用户仍被存储,但我之前所做的是从编辑框中提取用户名,因此当应用程序被销毁并重新启动时,编辑框为空,因为该页面已被跳过。

特此附上解决该问题的代码。

 if (firebaseAuth.getCurrentUser() != null)
            {
                FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
                startActivity(new Intent(LogIn.this,MainMenu.class).putExtra("UserName",user.getEmail()));

            }
            if (firebaseAuth.getCurrentUser() == null)
            {

            }

关于android - 当我的应用程序被销毁时,firebase 不会存储我的用户,它会跳过登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54642592/

相关文章:

firebase - 在 Firebase 安全规则中使用 UID 作为映射键

firebase - flutter |如何将数据添加到 Firestore 中的现有文档

angular - 对 Firestore 的递归调用

android - polymer 核心覆盖层不再滚动

android - android 热点上的网络服务器 - 它的 IP 是多少?

javascript - Firebase 配置对象发布在 github 上

swift - Firebase 新用户 : Identity Toolkit API error

firebase - 使用其他网站的凭据创建 Firebase 身份验证

java - Android Espresso - 测试 ListView 行

java - 删除的 firebase 值仍然显示在 datasnaphot 中