首页 > 解决方案 > Firebase 实时数据库 注销 Google 帐户

问题描述

我已经使用 Google Accounts 实现了登录方法,我的问题是注销功能不符合我的要求。我没有收到任何错误,只是代码无法正常工作。

有人能告诉我这段代码有什么问题吗?

选项片段:

        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 帐户。

标签: javaandroidfirebasegoogle-cloud-platformfirebase-authentication

解决方案


当您使用以下代码行时:

FirebaseAuth.getInstance().signOut();

这意味着您仅从Firebase 退出。

每当我单击注销时,应用程序都会将我重定向到登录活动(这很好),但是当我尝试登录时,它会自动登录到以前的 Google 帐户。

据我了解,您正在使用 Google Provider 进行身份验证。退出 Firebase 并不意味着您会自动退出 Google。要从 Google 注销,您必须明确添加对GoogleSignInClient#signOut()方法的调用:

googleSignInClient.signOut();

不要忘记注销操作是异步的,这意味着您必须等到操作完成。由于此方法返回一个类型的对象Task<Void>,您可以使用addOnCompleteListener(OnCompleteListener listener)方法来了解您何时完全退出。


推荐阅读