168 lines
7.1 KiB
Java
168 lines
7.1 KiB
Java
/* Copyright (c) 2008 Google Inc.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
|
|
package sample.oauth;
|
|
|
|
import com.google.gdata.client.GoogleService;
|
|
import com.google.gdata.client.authn.oauth.GoogleOAuthHelper;
|
|
import com.google.gdata.client.authn.oauth.GoogleOAuthParameters;
|
|
import com.google.gdata.client.authn.oauth.OAuthHmacSha1Signer;
|
|
import com.google.gdata.client.authn.oauth.OAuthRsaSha1Signer;
|
|
import com.google.gdata.client.authn.oauth.OAuthSigner;
|
|
import com.google.gdata.data.BaseEntry;
|
|
import com.google.gdata.data.BaseFeed;
|
|
import com.google.gdata.data.Feed;
|
|
|
|
import java.net.URL;
|
|
|
|
/**
|
|
* Sample application using OAuth in the Google Data Java Client. See the
|
|
* comments below to learn about the details.
|
|
*
|
|
*
|
|
*/
|
|
class OAuthExample {
|
|
|
|
public static void main(String[] args) throws Exception {
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
// STEP 1: Gather the user's information
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
// This step collects information from the user, such as the consumer key
|
|
// and which service to query. This is just a general setup routine, and
|
|
// the method by which you collect user information may be different in your
|
|
// implementation.
|
|
UserInputHelper inputController = new OAuthUserInputHelper();
|
|
UserInputVariables variables = inputController.getVariables();
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
// STEP 2: Set up the OAuth objects
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
// You first need to initialize a few OAuth-related objects.
|
|
// GoogleOAuthParameters holds all the parameters related to OAuth.
|
|
// OAuthSigner is responsible for signing the OAuth base string.
|
|
GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
|
|
|
|
// Set your OAuth Consumer Key (which you can register at
|
|
// https://www.google.com/accounts/ManageDomains).
|
|
oauthParameters.setOAuthConsumerKey(variables.getConsumerKey());
|
|
|
|
// Initialize the OAuth Signer. If you are using RSA-SHA1, you must provide
|
|
// your private key as a Base-64 string conforming to the PKCS #8 standard.
|
|
// Visit http://code.google.com/apis/gdata/authsub.html#Registered to learn
|
|
// more about creating a key/certificate pair. If you are using HMAC-SHA1,
|
|
// you must set your OAuth Consumer Secret, which can be obtained at
|
|
// https://www.google.com/accounts/ManageDomains.
|
|
OAuthSigner signer;
|
|
switch (variables.getSignatureMethod()) {
|
|
case RSA:
|
|
signer = new OAuthRsaSha1Signer(variables.getSignatureKey());
|
|
break;
|
|
case HMAC:
|
|
oauthParameters.setOAuthConsumerSecret(variables.getSignatureKey());
|
|
signer = new OAuthHmacSha1Signer();
|
|
break;
|
|
default:
|
|
throw new IllegalArgumentException("Invalid Signature Method");
|
|
}
|
|
|
|
// Finally create a new GoogleOAuthHelperObject. This is the object you
|
|
// will use for all OAuth-related interaction.
|
|
GoogleOAuthHelper oauthHelper = new GoogleOAuthHelper(signer);
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
// STEP 3: Get the Authorization URL
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Set the scope for this particular service.
|
|
oauthParameters.setScope(variables.getScope());
|
|
|
|
// This method also makes a request to get the unauthorized request token,
|
|
// and adds it to the oauthParameters object, along with the token secret
|
|
// (if it is present).
|
|
oauthHelper.getUnauthorizedRequestToken(oauthParameters);
|
|
|
|
// Get the authorization url. The user of your application must visit
|
|
// this url in order to authorize with Google. If you are building a
|
|
// browser-based application, you can redirect the user to the authorization
|
|
// url.
|
|
String requestUrl = oauthHelper.createUserAuthorizationUrl(oauthParameters);
|
|
System.out.println(requestUrl);
|
|
System.out.println("Please visit the URL above to authorize your OAuth "
|
|
+ "request token. Once that is complete, press any key to "
|
|
+ "continue...");
|
|
System.in.read();
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
// STEP 4: Get the Access Token
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Once the user authorizes with Google, the request token can be exchanged
|
|
// for a long-lived access token. If you are building a browser-based
|
|
// application, you should parse the incoming request token from the url and
|
|
// set it in GoogleOAuthParameters before calling getAccessToken().
|
|
String token = oauthHelper.getAccessToken(oauthParameters);
|
|
System.out.println("OAuth Access Token: " + token);
|
|
System.out.println();
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
// STEP 5: Make an OAuth authorized request to Google
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Initialize the variables needed to make the request
|
|
URL feedUrl = new URL(variables.getFeedUrl());
|
|
System.out.println("Sending request to " + feedUrl.toString());
|
|
System.out.println();
|
|
GoogleService googleService =
|
|
new GoogleService(variables.getGoogleServiceName(), "oauth-sample-app");
|
|
|
|
// Set the OAuth credentials which were obtained from the step above.
|
|
googleService.setOAuthCredentials(oauthParameters, signer);
|
|
|
|
// Make the request to Google
|
|
BaseFeed resultFeed = googleService.getFeed(feedUrl, Feed.class);
|
|
System.out.println("Response Data:");
|
|
System.out.println("=====================================================");
|
|
System.out.println("| TITLE: " + resultFeed.getTitle().getPlainText());
|
|
if (resultFeed.getEntries().size() == 0) {
|
|
System.out.println("|\tNo entries found.");
|
|
} else {
|
|
for (int i = 0; i < resultFeed.getEntries().size(); i++) {
|
|
BaseEntry entry = (BaseEntry) resultFeed.getEntries().get(i);
|
|
System.out.println("|\t" + (i + 1) + ": "
|
|
+ entry.getTitle().getPlainText());
|
|
}
|
|
}
|
|
System.out.println("=====================================================");
|
|
System.out.println();
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
// STEP 6: Revoke the OAuth token
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
System.out.println("Revoking OAuth Token...");
|
|
oauthHelper.revokeToken(oauthParameters);
|
|
System.out.println("OAuth Token revoked...");
|
|
}
|
|
}
|