android google 登录 window 注销后不再弹出

android google sign in window doesn't pop again after logout

在我的 Android 应用程序中,我的 MainActivity 中有一个 Google Plus 登录按钮。我在我的 onCLick() 方法中使用这些行:

mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(Plus.API, Plus.PlusOptions.builder().build())
                .addScope(Plus.SCOPE_PLUS_LOGIN)
                .build();

mGoogleApiClient.connect();

我第一次按下按钮时出现登录 window。我使用 google 帐户成功登录到 HomeActivity,然后使用以下两行成功注销:

Plus.AccountApi.clearDefaultAccount(AppController.getInstance().getmGoogleApiClient());
mGoogleApiClient.disconnect();

(我试着把 mGoogleApiClient.connect(); 作为第三行..它没有改变任何东西)

然后我 return 到 MainActivity,但是当我再次按下登录按钮时,它会自动将我登录回 HomeActivity,而不会弹出登录 window第一次...虽然我据称已退出...

有人知道我还应该在我的代码中添加什么吗? 或者也许有一种方法可以手动显示登录 window?是什么让它第一次流行起来?

非常感谢!

您需要在退出时添加以下代码,这样它会从您的应用中清除所有用户数据,重新登录后您会像第一次一样弹出登录 window .

public void signOutFromGplus() {
    if (mGoogleApiClient.isConnected()) {
        Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
        Plus.AccountApi.revokeAccessAndDisconnect(mGoogleApiClient);
        mGoogleApiClient.disconnect();
        mGoogleApiClient.connect();
    }
}

在您的 onCreate 方法中添加这部分代码:

    GoogleSignInOptions googleSignInOptions =
            new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                    .requestIdToken(getString(R.string.default_web_client_id))
                    .requestEmail()
                    .build();
    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this, connectionResult -> Toast.makeText(
                    this, "Connection failed",
                    Toast.LENGTH_SHORT).show())
            .addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions)
            .build();

然后在退出时添加这一行

if (mGoogleApiClient.isConnected()) {
       mGoogleApiClient.clearDefaultAccountAndReconnect();
    }