退出后,Android google登录窗口不会再次弹出

时间:2015-08-14 21:46:31

标签: android google-api-client google-signin google-plus-signin android-googleapiclient

在我的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,然后使用以下两行成功注销:

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

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

然后我返回MainActivity,但是当我再次按下登录按钮时,它会自动回到HomeActivity,而不会像第一次一样弹出登录窗口......虽然我已经签署了 - 出...

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

非常感谢!

2 个答案:

答案 0 :(得分: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();
    }

答案 1 :(得分:0)

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

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