google oauth 1.0 standalone app example
来源:互联网 发布:mt4编程论坛 编辑:程序博客网 时间:2024/06/05 01:19
!!!OAuth in the Google Data Protocol Client Libraries讲解: http://code.google.com/intl/zh-TW/apis/gdata/docs/auth/oauth.html
package example_tomson.oauth1;import java.net.URL;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;/** * * google oauth 1.0请参看http://blog.csdn.net/totogogo/article/details/6835820 * * 该example是演示google oauth 1.0, it is for standalone application,即没有callback_url parameter。没有设置 * callback url parameter,就会认为是anonymous。当user click了authorize button后,就会出现一个google handle result msg web page * * 而如果是web app使用oauth 1.0,就会设置callback url,当user click了authorize button后, * 就会redirect to callback url with authorized token and related params * * standalone app使用auth 1.0时同样需要register a domain来获取consumer key and secret. * * */public class OAuth1Example {public static void main(String[] args) throws Exception{//该comsumer key是String oauthConsumerKey="chtl.hkbu.edu.hk";String oauthConsumerSecret="XXXXXX";String signatureMethod="HMAC"; //HMAC or RSA//for calendar apiString scope = "http://www.google.com/calendar/feeds/"; String strCalendarFeedUrl="http://www.google.com/calendar/feeds/default/allcalendars/full"; //////////////////////////////////////////////////////////////////////////// // STEP 1: 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实例,它包含所有oauth parameterGoogleOAuthParameters oauthParameters = new GoogleOAuthParameters(); oauthParameters.setOAuthConsumerKey(oauthConsumerKey); oauthParameters.setScope(scope); // 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. //创建oauth signer实例 OAuthSigner signer=null; if(signatureMethod=="HMAC") { //如果使用HMAC-SHA1 method,则需要在GoogleOAuthParameters obj里提供OAuth Consumer Secret(使用RSA-SHA1 method则不需要提供它) oauthParameters.setOAuthConsumerSecret(oauthConsumerSecret); signer = new OAuthHmacSha1Signer(); } else if(signatureMethod=="RSA"){ //如果使用RSA-SHA1 method,你必须提供你的符合PKCS #8标准的private key as a Base-64 string String signatureKey="<RSA private key>"; signer = new OAuthRsaSha1Signer(signatureKey); } //////////////////////////////////////////////////////////////////////////// // STEP 2: Get the Authorization URL //////////////////////////////////////////////////////////////////////////// // Create a new GoogleOAuthHelperObject. This is the object you will use for all OAuth-related interaction. //以oauth signer obj为参数创建GoogleOAuthHelper obj,然后以GoogleOAuthParameters作为参数call getUnauthorizedRequestToken method来获取unauthorized request token GoogleOAuthHelper oauthHelper = new GoogleOAuthHelper(signer); oauthHelper.getUnauthorizedRequestToken(oauthParameters); //send a request to get the unauthorized request token //!!!然后它会把response返回的 unauthorized request token和token secret写入oauthParameters object里// System.out.println("=====================================================");// System.out.println("auth token is: " + oauthParameters.getOAuthToken());// System.out.println("auth token secret is: "+oauthParameters.getOAuthTokenSecret());// System.out.println("auth signature is: " + oauthParameters.getOAuthSignature());// System.out.println("auth signature method is: " + oauthParameters.getOAuthSignatureMethod());// System.out.println("auth Nonce is: " + oauthParameters.getOAuthNonce());// System.out.println("auth Verifier is: " + oauthParameters.getOAuthVerifier());// System.out.println("====================================================="); // 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. //call createUserAuthorizationUrl method来生成供user进行authorize OAuth request token的URL //user可以在browser里access to this URL,然后click authorization button来允许该app能够进入你的google账户里获取data/info/file 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 3: 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(). //!!注意:在上一个step,user赋予授权之后,并不需要从browser里获取任何返回的parameter value //(感觉只需要对request token进行authorize即可),然后就可以call //oauthHelper.getAccessToken(oauthParameters) //来获取access token, //!!!同时会把oauthParameters里的oauth token的值由authorized request token转换成access token!!! String token = oauthHelper.getAccessToken(oauthParameters); System.out.println("OAuth Access Token: " + token); //////////////////////////////////////////////////////////////////////////// // STEP 4: access calendar api //////////////////////////////////////////////////////////////////////////// URL feedUrl = new URL(strCalendarFeedUrl); System.out.println("Sending request to " + feedUrl.toString()); System.out.println(); String googleServiceName = "cl"; GoogleService googleService = new GoogleService(googleServiceName, "oauth-sample-app"); // Set the OAuth credentials which were obtained from the step above. //参数oauthParameters包含上一个step获取的access token info 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 5: Revoke the OAuth token //////////////////////////////////////////////////////////////////////////// System.out.println("Revoking OAuth Token..."); oauthHelper.revokeToken(oauthParameters); System.out.println("OAuth Token revoked...");}}
- google oauth 1.0 standalone app example
- Google oauth 1.0
- google+oauth+2.0+java+client+library+simple+example
- google chrome standalone
- Google OAUTH + OpenID解决方案
- Google 2 legged oauth
- Google oauth 2.0
- google oauth contacts
- Google OAUTH + OpenID解决方案
- Config log4j in standalone app
- Google lmctfy 3.0 - Example
- Linked 、 Google 、 Facebook oAuth登录
- Linked 、 Google 、 Facebook oAuth登录
- Linked 、 Google 、 Facebook oAuth登录
- MonkeyRunner_Testing app example(1)
- PHP实现google开放登录 Google Oauth
- Spring global exception handling with standalone app
- Android Google Map Application Example
- hdu 1556Color the ball
- 算法系列之六:最长公共子序列(LCS)问题(连续子序列)的三种解法
- 顺序栈和链栈的各种操作
- 顺序队列和链队列的各种操作
- 《当程序员的那些狗日日子》(四十九)倾注心血而成的系统
- google oauth 1.0 standalone app example
- 机器视觉领域的牛人们的博客
- 10亿数中找出最大1000个数的算法C实现(简化版)
- Oracle Analytics Portfolio
- WPF学习笔记--控件模板
- 基于ARM处理器的linux中断详解(结合linux2.6.32.2-GQ2440分析)
- Android[中级教程]第八章 Json数据的处理
- AIX 第六天偶记
- 树的镜像反转