首页 > 解决方案 > 适用于 Android 的 GoogleSignInClient.signOut() 不会注销用户

问题描述

1)在我的HomeActivity屏幕上会有一个用户退出按钮。这个按钮导致LoginActivity 的signOut ()方法

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);

    //adding an onclicklistener to signOut button
    findViewById(R.id.sign_out_button).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            LoginActivity loginActivity = new LoginActivity();
            loginActivity.signOut();
        }
    });
}

2) 在我的LoginActivity中, signOut ()方法将执行Google 提供的本教程中的内容

public void signOut() {
    mGoogleSignInClient.signOut()
            .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    Toast.makeText(getApplicationContext(), "Disconnecting...", Toast.LENGTH_LONG);
                    Intent i = new Intent(getApplicationContext(), LoginActivity.class);
                    startActivity(i);
                }
            });
}

我希望上面的代码能够工作,但发生的情况是,当退出后执行返回 LoginActivity 的意图时,下面的 onStart() 方法进入if (account != null)并返回应该的用户被登出

@Override
public void onStart() {
    super.onStart();

    // Check for existing Google Sign In account
    GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);

    if (account != null) {
        findViewById(R.id.sign_in_button).setVisibility(View.GONE);
        Toast.makeText(this, "Logged as" + account.getDisplayName(), Toast.LENGTH_LONG).show();

    } else {
        findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
    }
}

标签: javaandroidgoogle-api

解决方案


clearDefaultAccountAndReconnect() api 将清除以前登录的帐户详细信息。尝试在侦听器的注销 onComplete() 方法中使用以下代码段。

if (mGoogleApiClient.hasConnectedApi(Auth.GOOGLE_SIGN_IN_API)) {
        mGoogleApiClient.clearDefaultAccountAndReconnect();
        mGoogleApiClient.stopAutoManage(context);
        mGoogleApiClient.disconnect();
    }

推荐阅读