Quantcast
Channel: 教程 – bang’s blog
Viewing all articles
Browse latest Browse all 2

使用twitter4j的OAuth方式登录

0
0

前两天想为推特中文圈添加OAuth登陆的功能,因为我整个站用的是twitter4j,所以必须得用twitter4j提供的方法去进行 OAuth登陆,但是twitter4j官方站的例子实在太诡异了,而且是针对java应用程序的例子而不是J2EE的例子,看了半天都没法把它转到 J2EE上来,网上搜了挺久也没有相关教程可以模仿,OAuth方式登录实在是够迷惑人的,两种tonke很容易就混了,源代码也很复杂看不懂,实在是折腾死人,但最终还是折腾出来了,虽然可能做twitter应用的人不多,用twitter4j做twitter应用的人更不多,但还是分享下 twitter4j的OAuth登陆方法吧。我也不太懂里面的运行原理,只把我的用法写出来。

初始页面:

Twitter twitter = new Twitter();

//OAuth有两种Token,分别是RequestToken和AccessTonke。
//通过OAuth Consumer的key和secret就可以获取RequestTokenKey和RequestTokenSecret:
twitter.setOAuthConsumer( "[your consumer key] ",  "[your consumer secret] ");
RequestToken requestToken = twitter.getOAuthRequestToken();

String token = requestToken.getToken();
String tokenSecret = requestToken.getTokenSecret();

//先保存两个requestToken
Utility.setCookie( "tonke ",token,false,response);
Utility.setCookie( "tokenSecret ",tokenSecret,false,response);

//跳转到Twitter OAuth验证页面
response.sendRedirect(requestToken.getAuthorizationURL());

另一个页面上,也就是Twitter OAuth认证后返回的页面:

Twitter twitter = new Twitter();
twitter.setOAuthConsumer( "[your consumer key] ",  "[your consumer secret] ");

//获取之前保存的requestTokenKey和requestTokenSecret
String token = Utility.getCookie( "tonke ", request);
String tokenSecret = Utility.getCookie( "tokenSecret ", request);

//通过requestTokenKey和requestTokenSecret获得accessToken,包含了accessTokenKey和accessTokenSecret
AccessToken accessToken = twitter.getOAuthAccessToken(token, tokenSecret);
//把accessToken给twitter,twitter这个实例就算登陆了,效果等同于twitter = new twitter( "name ", "password ")
twitter.setOAuthAccessToken(accessToken);

//在这里就可以updateStatus了
twitter.updateStatus( "OAuth登陆成功 ");

//把accessTokenKey和accessTokenSecret保存起来,下次就不用再验证了
Utility.setCookie( "accessToken ",accessToken.getToken(), true, response);
Utility.setCookie( "accessTokenSecret ", accessToken.getTokenSecret(), true,response);

在其他页面上,只要把之前保存的accessTokenKey和accessTokenSecret传给twitter就行了:

twitter = new Twitter();
twitter.setOAuthConsumer(ConsumerKey, ConsumerScret);
AccessToken accessToken = new AccessToken(Utility.getCookie( "accessToken ", request), Utility.getCookie( "accessTokenSecret ", request));
twitter.setOAuthAccessToken(accessToken);
twitter.updateStatus( "OAuth登陆成功 ");

Viewing all articles
Browse latest Browse all 2

Latest Images

Trending Articles





Latest Images