我尝试从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);
}
}
}
答案 0 :(得分:1)
我认为您已被正确注销,但是随着您移至
LoginActivity.class
在可能再次登录用户的地方,您必须在登录活动中进行某些更改。
答案 1 :(得分:0)
为什么要使用SharedPreferences?如果您要使用Firebase维护会话,则不需要sharedpreferences。 顺便说一下,您的代码似乎是正确的。调用注销函数后,请尝试进行以下修改。
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()方法(因为我看不到您的完整代码,可能是您弄乱了该方法中的内容),因此为了进行测试,请删除该方法,并添加就像我说的那样标记您的意图。
如果可以,请告诉我。
希望这会对您有所帮助。谢谢