在firebase.auth()。signOut()之后,当我尝试再次登录而不注册时,它不起作用

时间:2017-09-03 20:47:22

标签: android firebase firebase-authentication

我无法在firebase.auth()。signOut()之后登录。如果我再次注册,那么它可以工作。但退出用户无法登录。我该怎么办?

注销:

private void logout() {
    session.setLoggedin(false);
    mAuth.signOut();
    Intent intent = new Intent(Main2Activity.this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}

登录:

private void LogIn() {
    mDatabase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.child("+880" + mobile).exists() && dataSnapshot.child("+880" + mobile).child("password").getValue().equals(userPassword) ) {
                Toast.makeText(MainActivity.this, "Password match", Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(MainActivity.this, Main2Activity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                session.setLoggedin(true);
                startActivity(intent);
            }else {
                Toast.makeText(MainActivity.this, "User or Password doesn't match", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

1 个答案:

答案 0 :(得分:1)

尝试使用Firebase身份验证来处理您的登录方法。 addValueEventListener下的onDataChange方法仅在Firebase数据库中的特定数据发生更改时触发。因此,如果数据库中没有任何更改,onDataChange中的代码将永远不会被执行。

以下是如何使用Firebase身份验证登录用户的简单示例:

private void login(String email, String password) {
    mAuth.signInWithEmailAndPassword(email, password)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if(task.isSuccessful()) {
                        //If login is successful do something here
                    } else {
                        //If login is not successful do something here
                    }
                }
             });
}        

确保在用户注册时向其注册Firebase身份验证,以便您可以使用Firebase身份验证对其进行签名。我可以看到您使用Firebase身份验证方法退出用户,我假设您已使用Firebase身份验证对其进行了注册?因此,尝试访问用户&#39;来自身份验证方的密码,而不是来自数据库的密码。