Search in sources :

Example 1 with Credentials

use of com.google.refine.oauth.Credentials in project OpenRefine by OpenRefine.

the class AuthorizeCommand method doGet.

@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // get the provider from the request
    Provider provider = OAuthUtilities.getProvider(request);
    try {
        // see if the request comes with access credentials
        Credentials access_credentials = Credentials.getCredentials(request, provider, Credentials.Type.ACCESS);
        // prepare the continuation URL that the OAuth provider will redirect the user to
        // (we need to make sure this URL points back to this code or the dance will never complete)
        String callbackURL = getBaseURL(request, provider);
        if (access_credentials == null) {
            // access credentials are not available so we need to check 
            // to see at what stage of the OAuth dance we are
            // get the request token credentials
            Credentials request_credentials = Credentials.getCredentials(request, provider, Credentials.Type.REQUEST);
            OAuthConsumer consumer = OAuthUtilities.getConsumer(request_credentials, provider);
            OAuthProvider pp = provider.getProvider();
            if (request_credentials == null) {
                // no credentials were found, so let's start the dance
                // get the request token
                String url = pp.retrieveRequestToken(consumer, callbackURL);
                request_credentials = new Credentials(consumer.getToken(), consumer.getTokenSecret(), provider);
                // and set them to that we can retrieve them later in the second part of the dance
                Credentials.setCredentials(request, response, request_credentials, Credentials.Type.REQUEST, 3600);
                // now redirect the user to the Authorize URL where she can authenticate against the
                // service provider and authorize us. 
                // The provider will bounce the user back here for us to continue the dance.
                response.sendRedirect(url);
            } else {
                // we are at the second stage of the dance, so we need need to obtain the access credentials now
                // if we got here, it means that the user performed a valid authentication against the
                // service provider and authorized us, so now we can request more permanent credentials
                // to the service provider and save those as well for later use.
                // this is set only for OAuth 1.0a  
                String verificationCode = request.getParameter(OAUTH_VERIFIER_PARAM);
                pp.retrieveAccessToken(consumer, verificationCode);
                access_credentials = new Credentials(consumer.getToken(), consumer.getTokenSecret(), provider);
                // no matter the result, we need to remove the request token
                Credentials.deleteCredentials(request, response, provider, Credentials.Type.REQUEST);
                Credentials.setCredentials(request, response, access_credentials, Credentials.Type.ACCESS, 30 * 24 * 3600);
                finish(response);
            }
        } else {
            finish(response);
        }
    } catch (Exception e) {
        Credentials.deleteCredentials(request, response, provider, Credentials.Type.REQUEST);
        Credentials.deleteCredentials(request, response, provider, Credentials.Type.ACCESS);
        respondException(response, e);
    }
}
Also used : OAuthProvider(oauth.signpost.OAuthProvider) OAuthConsumer(oauth.signpost.OAuthConsumer) Credentials(com.google.refine.oauth.Credentials) ServletException(javax.servlet.ServletException) URISyntaxException(java.net.URISyntaxException) IOException(java.io.IOException) OAuthProvider(oauth.signpost.OAuthProvider) Provider(com.google.refine.oauth.Provider)

Aggregations

Credentials (com.google.refine.oauth.Credentials)1 Provider (com.google.refine.oauth.Provider)1 IOException (java.io.IOException)1 URISyntaxException (java.net.URISyntaxException)1 ServletException (javax.servlet.ServletException)1 OAuthConsumer (oauth.signpost.OAuthConsumer)1 OAuthProvider (oauth.signpost.OAuthProvider)1