android - 在 firebase.auth().signOut() 之后,当我尝试在不注册的情况下再次登录时,它不起作用

标签 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) {

        }
    });
}

最佳答案

尝试使用 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 身份验证对他们进行了注册?因此,请尝试从您的身份验证端而不是数据库访问用户密码。

关于android - 在 firebase.auth().signOut() 之后,当我尝试在不注册的情况下再次登录时,它不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46027703/

相关文章:

android 上传 multipart 有进度

android - GoogleApiClient 连接失败,状态码为 SIGN_IN_REQUIRED

android - 如何在聊天应用程序中构建 Firestore 数据库?

javascript - React Native Firebase 电话身份验证问题

firebase - 这是检查用户是否登录的正确方法吗? flutter 火力

java - Android - Osmdroid 6.0.2,从 SqlTileWriter 切换到 TileWriter(本地存储)

node.js - 云函数和 Firebase 的客户端 CORS 错误

firebase - future 函数返回空Firestore

android - 将用户密码存储在 FirebaseDatabase 中是个好主意吗?

android - 在 Android 中以编程方式合并 xml 布局