google oauth 1.0 standalone app example

2024-04-19 22:38

本文主要是介绍google oauth 1.0 standalone app example,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

!!!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 tokenGoogleOAuthHelper 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/fileString 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 apiURL 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 infogoogleService.setOAuthCredentials(oauthParameters, signer);//!!!关键方法:Make the request to GoogleBaseFeed 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 tokenSystem.out.println("Revoking OAuth Token...");oauthHelper.revokeToken(oauthParameters);System.out.println("OAuth Token revoked...");}}

这篇关于google oauth 1.0 standalone app example的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/918633

相关文章

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“

MFC中App,Doc,MainFrame,View各指针的互相获取

纸上得来终觉浅,为了熟悉获取方法,我建了个SDI。 首先说明这四个类的执行顺序是App->Doc->Main->View 另外添加CDialog类获得各个指针的方法。 多文档的获取有点小区别,有时间也总结一下。 //  App void CSDIApp::OnApp() {      //  App      //  Doc     CDocument *pD

ConstraintLayout布局里的一个属性app:layout_constraintDimensionRatio

ConstraintLayout 这是一个约束布局,可以尽可能的减少布局的嵌套。有一个属性特别好用,可以用来动态限制宽或者高app:layout_constraintDimensionRatio 关于app:layout_constraintDimensionRatio参数 app:layout_constraintDimensionRatio=“h,1:1” 表示高度height是动态变化

com.google.gson.JsonSyntaxException:java.lang.IllegalStateException异常

用Gson解析json数据的时候,遇到一个异常,如下图: 这个异常很简单,就是你的封装json数据的javabean没有写对,你仔细查看一下javabean就可以了 比如:我的解析的代码是             Gson gson = new Gson();             ForgetJson rb = gson.fromJson(agResult.mstrJson, For

App Store最低版本要求汇总

1,自此日期起: 2024 年 4 月 29 日 自 2024 年 4 月 29 日起,上传到 App Store Connect 的 App 必须是使用 Xcode 15 为 iOS 17、iPadOS 17、Apple tvOS 17 或 watchOS 10 构建的 App。将 iOS App 提交至 App Store - Apple Developer 2,最低XCode版本 Xcod

Google Earth Engine——高程数据入门和山体阴影和坡度的使用

目录 山体阴影和坡度 对图像应用计算 应用空间减速器 高程数据 通过从“重置”按钮下拉菜单中选择“清除脚本”来清除脚本。搜索“elevation”并单击 SRTM Digital Elevation Data 30m 结果以显示数据集描述。单击导入,将变量移动到脚本顶部的导入部分。将默认变量名称“image”重命名为“srtm”。使用脚本将图像对象添加到地图: Map

The import com.google cannot be resolved

The import com.google cannot be resolved,报错: 第一感觉就是缺少jar包,因为项目用maven管理,所以在pom.xml中添加: <dependency>  <groupId>com.google.code.gson</groupId>  <artifactId>gson</artifactId>  <version>2.3.1</ver

Node.js和vue3实现GitHub OAuth第三方登录

Node.js和vue3实现GitHub OAuth第三方登录 前言 第三方登入太常见了,微信,微博,QQ…总有一个你用过。 在开发中,我们希望用户可以通过GitHub账号登录我们的网站,这样用户就不需要注册账号,直接通过GitHub账号登录即可。 效果演示 注册配置 GitHub 应用 1.首先登录你的GitHub然后点击右上角的头像->点击进入Settings页面 2.在

C++常见异常汇总(三): fatal error: google/protobuf/port_def.inc

文章目录 1、fatal error : sw/redis++/redis.h2、fatal error: dwarf.h: No such file or directory3、fatal error: elfutils/libdw.h: No such file or directory4、fatal error: libunwind.h: No such file or directo

概率DP (由一道绿题引起的若干问题。目前为一些老题,蒟蒻的尝试学习1.0)

概率DP: 利用动态规划去解决 概率 期望 的题目。 概率DP 求概率(采用顺推) 从 初始状态推向结果,同一般的DP类似,只是经历了概率论知识的包装。 老题: 添加链接描述 题意: 袋子里有w只白鼠,b只黑鼠,A和B轮流从袋子里抓,谁先抓到白色谁就赢。A每次随机抓一只,B每次随机 抓完一只后 会有另外一只随机老鼠跑出来。如果两个人都没有抓到白色,那么B赢。A先抓,问A赢得概率。 w b 均在