我已经使用谷歌帐户实现了登录方法,我的问题是注销功能不符合我想要的。我没有收到任何错误,只是代码没有正常工作。
谁能告诉我这段代码有什么问题?选择片段:
Preference logoutPreference = findPreference(getString(R.string.pref_key_logout));
logoutPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
FirebaseAuth.getInstance().signOut();
Intent broadcastIntent = new Intent();
broadcastIntent.setAction("com.example.budgetapp.ACTION_LOGOUT");
getActivity().sendBroadcast(broadcastIntent);
getActivity().startActivity(new Intent(getActivity(), SignInActivity.class));
getActivity().finish();
return true;
}
});
主要活动:@Override
protected void onResume() {
super.onResume();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.example.budgetapp.ACTION_LOGOUT");
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
finish();
}
};
registerReceiver(receiver, intentFilter);
}
为什么代码不工作?我正在使用Firebase实时数据库
每当我点击注销应用程序重定向我登录活动(这是好的),但当我尝试登录,它会自动登录到以前的谷歌帐户。
当您使用以下代码行时:
FirebaseAuth.getInstance().signOut();
表示您只签出重火力点。
每当我点击注销应用程序重定向我登录活动(这是好的),但当我尝试登录时,它会自动登录到以前的谷歌帐户。
据我所知,您正在使用Google Provider进行身份验证。从Firebase注销并不意味着你自动从Google注销。要从Google签出,你必须显式地添加一个调用GoogleSignInClient#signOut()方法:
googleSignInClient.signOut();
不要忘记签出操作是异步的,这意味着您必须等待操作完成。因为这个方法返回一个Task<Void>
类型的对象,你可以使用addOnCompleteListener(OnCompleteListener监听器)方法,知道你什么时候完全退出。