java - Android 的 GoogleSignInClient.signOut() 不会注销用户

标签 java android google-api

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() 方法将执行 this tutorial 中的内容由谷歌提供

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 的 Intent 时,下面的 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);
    }
}

最佳答案

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

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

关于java - Android 的 GoogleSignInClient.signOut() 不会注销用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58172878/

相关文章:

java - ManagedBean 中的数据不会在 View 中刷新

java - 使用显式 Intent 时应用程序崩溃

java - Maven Surefire 插件未在 jenkins 中选择测试

java - Android 列表页脚

android - 使用小部件上的按钮手动更新 android 应用程序小部件

javascript - google analytics api根据帐户更改网络属性

python - 任何无需 token.pickle 即可创建新 Google 日历事件的方法

java - Android Studio : android. jar 缺少一些类

Android selectableItemBackground 背景色

python - 如何返回GoogleAPI搜索结果的距离?