0

在我的 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();

第一次按下按钮时,会出现一个登录窗口。我使用我的 google 帐户成功登录到 HomeActivity,然后使用以下 2 行成功注销:

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

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

所以然后我回到MainActivity,但是当我再次按下登录按钮时,它会自动让我重新登录到HomeActivity,而不会像第一次那样弹出登录窗口......虽然我据称已经退出...... .

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

非常感谢!

4

2 回答 2

1

在你的 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();
    }
于 2018-12-29T12:25:05.973 回答
0

您需要在注销时添加以下代码,这样它将清除您应用中的所有用户数据,重新登录后您将像第一次一样弹出登录窗口。

public void signOutFromGplus() {
    if (mGoogleApiClient.isConnected()) {
        Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
        Plus.AccountApi.revokeAccessAndDisconnect(mGoogleApiClient);
        mGoogleApiClient.disconnect();
        mGoogleApiClient.connect();
    }
}
于 2015-09-11T05:04:41.120 回答