FirebaseAuth.getInstance().signOut()无法退出登录

3

我试图从Firebase中注销用户,但当我关闭应用程序并再次打开时,用户仍然保持连接。

我尝试了常规的Firebase用户注销方法,但它没有解决问题。我想知道是什么原因导致了这个问题。

 logout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FirebaseAuth.getInstance().signOut();
                Intent picture_intent = new Intent(Dashboard.this,LoginActivity.class);
                startActivity(picture_intent );
            }
        });

检查用户是否连接:

@Override
    public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
        FirebaseUser currentUser = firebaseAuth.getCurrentUser();
        if(currentUser != null)
        {
            SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
            int again = preferences.getInt(String.valueOf(R.string.remember_me), 0);
            if(again == 0)
            {
                Intent i = new Intent(getApplicationContext(), PagerActivity.class);
                startActivity(i);
            }
            else
            {
                Intent i = new Intent(getApplicationContext(), Dashboard.class);
                startActivity(i);
            }

        }
    }

你如何检查用户是否已登录? - Andrei Konstantinov
你的项目中有 FirebaseUI-Android 库吗? - Andrei Konstantinov
我没有FirebaseUI-Android库,我的应用程序不需要它。我会检查智能锁,但我不认为那是问题,也许在不同的手机上尝试会有所帮助。 - gg5
2个回答

5
我认为你被正确地注销了,但是因为你正在转到LoginActivity.class,你可能需要在Login Activity中进行一些更改以重新登录用户。

2

为什么要使用SharedPreferences?如果您正在使用Firebase维护会话,则不需要使用sharedpreferences。 顺便说一下,您的代码似乎是正确的。在调用logout函数后,请尝试对您的意图进行以下修改。

最初的回答:

FirebaseAuth.getInstance().signOut();    
Intent intent = new Intent(getActivity(), LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);

请完全删除您的onAuthStateChanged()方法(因为我无法看到您的完整代码,可能会在此方法中搞乱事情),因此只需为测试删除此方法,并按照我所说的向您的意图添加标志。如果它可以工作,请告诉我。
希望这可以帮助您。谢谢。"Original Answer"翻译成"最初的回答"

1
谢谢,它对我起作用了,我犯的错误就像你所说的那样在登录处。 - gg5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接