为什么android g + revokeAccessAndDisconnect仍然保持我的g +权限

时间:2015-06-05 01:31:33

标签: android oauth google-plus

我正在为我的应用程序使用G +登录。我可以选择让用户断开g +帐户。

 case R.id.action_disconnect:
            disconnectDialog = new ProgressDialog(this);
            disconnectDialog.setMessage(getResources().getString(R.string.disconnect_dialog));
            disconnectDialog.show();
            googleApiClient = buildGoogleApiClient();
            googleApiClient.connect();
    private GoogleApiClient buildGoogleApiClient() {
    return new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(Plus.API, Plus.PlusOptions.builder().build())
            .addScope(new Scope("email"))
            .build();
}

public void onConnected(Bundle bundle) {
    Plus.AccountApi.clearDefaultAccount(googleApiClient);
    Plus.AccountApi.revokeAccessAndDisconnect(googleApiClient).setResultCallback(new ResultCallback<Status>() {

        @Override
        public void onResult(Status status) {
            googleApiClient.disconnect();
            if (disconnectDialog != null)
                disconnectDialog.dismiss();
            accManager.Log();;
        }

    });
}

accManager.log 将应用返回登录界面。

Plus.AccountApi.clearDefaultAccount(googleApiClient);清除用户帐户并验证,因为当我点击g +登录时我需要再次选择帐户。

Plus.AccountApi.revokeAccessAndDisconnect(googleApiClient) 不会撤销我的应用权限,因为当我点击同一帐户的g +登录时,只要求我选择帐户但不要求获得许可。

当我以新帐户登录时,请求我的g +权限

同时卸载和reinstall我的应用仍然保持我的g +权限。 有没有人遇到这个问题?非常感谢任何帮助。我跟着https://developers.google.com/+/mobile/android/sign-in

1 个答案:

答案 0 :(得分:0)

我找到了答案

buildGoogleApiClient应为

    private GoogleApiClient buildGoogleApiClient() {
        return new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(Plus.API, Plus.PlusOptions.builder().build())
                .addScope(Plus.SCOPE_PLUS_LOGIN)
                .addScope(new Scope("email"))
                .build();
    }