使用twitter4j的OAuth方式登录
2009-9-24
前两天想为推特中文圈添加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登陆成功 ");
正要研究这个。。正好