База данных Firebase в реальном времени выйдите из учетной записи Google

# #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. Спасибо, это то, что я ищу!