# #java #android #firebase #google-cloud-platform #firebase-authentication
Вопрос:
Я реализовал метод входа в систему с использованием учетных записей Google, моя проблема в том, что функция выхода из системы ведет себя не так, как я хочу. Я не получаю никаких ошибок, просто код не работает должным образом.
Может кто-нибудь сказать мне, что не так с этим кодом?
Фрагмент параметров:
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 в реальном времени
Всякий раз, когда я нажимаю Выход из системы, приложение перенаправляет меня на вход в действие (что хорошо), но когда я пытаюсь войти в систему, оно автоматически входит в предыдущую учетную запись Google.
Ответ №1:
При использовании следующей строки кода:
FirebaseAuth.getInstance().signOut();
Это означает, что вы выходите только из Firebase.
Всякий раз, когда я нажимаю Выход из системы, приложение перенаправляет меня на вход в действие (что хорошо), но когда я пытаюсь войти в систему, оно автоматически входит в предыдущую учетную запись Google.
Насколько я понимаю, вы используете поставщика Google для аутентификации. Выход из Firebase не означает, что вы автоматически выходите из Google. Чтобы выйти из Google, вам необходимо явно добавить вызов метода GoogleSignInClient#SignOut():
googleSignInClient.signOut();
Не забывайте также, что операция выхода является асинхронной, что означает, что вам нужно дождаться завершения операции. Поскольку этот метод возвращает объект типа Task<Void>
, вы можете использовать <a rel=»noreferrer noopener nofollow» href=»https://developers.google.com/android/reference/com/google/android/gms/tasks/Task#addOnCompleteListener(com.google.android.gms.tasks.OnCompleteListener)» rel=»nofollow noreferrer»>метод addOnCompleteListener (прослушиватель OnCompleteListener), чтобы узнать, когда вы полностью вышли из системы.
Комментарии:
1. Спасибо, это то, что я ищу!