danny117
danny117

Reputation: 5651

Reset GoogleAuthUtil so it will as for permission again

I'm using the google play services authentication example here

How do I reset the GoogleAuthUtil so it will ask for permission again?

It asks for permission by throwing the userRecoverableException which is fed to a dialog. But it only asks for permission one time. I need to test asking for permission again.

I've tried to uninstall the sample app and re-install the sample app and this didn't work it doesn't ask for permission seems it already knows the app.

protected String fetchToken() throws IOException {
    try {
        return GoogleAuthUtil.getToken(mActivity, mEmail, mScope);
    } catch (UserRecoverableAuthException userRecoverableException) {
        // GooglePlayServices.apk is either old, disabled, or not
        // present, which is
        // recoverable, so we need to show the user some UI through the
        // activity.
        MyGooglePlay.handleException(userRecoverableException);
    } catch (GoogleAuthException fatalException) {
        onError("Unrecoverable error " + fatalException.getMessage(),
                fatalException);
    }
    return null;
}


/**
 * This method is a hook for background threads and async tasks that need to provide the
 * user a response UI when an exception occurs.
 */
public void handleException(final Exception e) {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            if (e instanceof GooglePlayServicesAvailabilityException) {
                // The Google Play services APK is old, disabled, or not present.
                // Show a dialog created by Google Play services that allows
                // the user to update the APK
                int statusCode = ((GooglePlayServicesAvailabilityException)e)
                        .getConnectionStatusCode();
                Dialog dialog = GooglePlayServicesUtil.getErrorDialog(statusCode,
                        HelloActivity.this,
                        REQUEST_CODE_RECOVER_FROM_PLAY_SERVICES_ERROR);
                dialog.show();
            } else if (e instanceof UserRecoverableAuthException) {
                // Unable to authenticate, such as when the user has not yet granted
                // the app access to the account, but the user can fix this.
                // Forward the user to an activity in Google Play services.
                Intent intent = ((UserRecoverableAuthException)e).getIntent();
                startActivityForResult(intent,
                        REQUEST_CODE_RECOVER_FROM_PLAY_SERVICES_ERROR);
            }
        }
    });
}

Upvotes: 1

Views: 492

Answers (3)

Davidsun
Davidsun

Reputation: 721

If you're a user, like what free3dom answered, you can go to Google Settings app to revoke the access.

If you want to revoke the access programmatically, you can call Google's revoke token API: https://developers.google.com/identity/protocols/OAuth2WebServer#tokenrevoke. Basically, you should first get a valid token with a set of scopes by calling GoogleAuthUtil.getToken(), and then revoke the token. After the token is revoked, you should see the permission dialog again.

Upvotes: 0

Sasa Sekulic
Sasa Sekulic

Reputation: 669

You can also call GoogleAuthUtil.invalidateToken or GoogleAuthUtil.clearToken, that should make it ask the permission again.

Upvotes: 0

free3dom
free3dom

Reputation: 18978

You can use the Google Settings app to de-authorize connected applications, by following these steps:

  1. Launch the Google Settings app

Google Settings App Icon

  1. Choose the Connected apps option (at the top)

Google Settings options

  1. A list of connected apps is displayed; find the app you want to de-authorize and select it. Sorry there is no screenshot as I'm not able to remove personal info from it ATM - but it should be quite straightforward what to do here :)

  2. Finally, click the Disconnect button (at the bottom) on the details page of the app

Connected app details

Note that it might take a moment before the app is de-authorized.

Upvotes: 1

Related Questions