今天在api.weibo.com上看到新浪微博的API推出了2.0版本,其中最大的不同是采用了OAuth2.0授权机制,而且据说是在不久的将来(还没有时间表),新浪将不支持OAuth1.0,着时把我吓了一把。本着被修改的原则,我计划将我的应用也移到OAuth2.0,结果从昨天晚上,到今天上午,花了很长的时间读新的API,越读越失望,现将其中的OAuth2.0授权认证机制开发心得贴出来,供大伙参考。
第一步:修改Config.properties的配置信息.打开这个文件,将你的信息填入,具体如下:
client_ID = (你申请应用的appkey)
client_SERCRET =(你申请应用的app_secret)
redirect_URI =(回调地址,跟网上配置的一致,本人比较穷,而且用的是客户端,所以这里就为空)
baseURL =https://api.weibo.com/2/
accessTokenURL =https://api.weibo.com/2/oauth2/access_token
authorizeURL =https://api.weibo.com/2/oauth2/authorize
第二步打开example目录下的文件OAuth4Code.java,code如下图
第三步:运行此文件,浏览器会自动打开一个网页,如下图.在里面输入你的账号、密码,点击“登陆并授权”
第四步:登陆后,浏览器会自动跳转到回调页面(由于我没有自己的网站,没有填回调页面,所以浏览器会打开一个第三方授权错误的界面),把地址栏中的“https://api.weibo.com/2/oauth2/authorize?code=XXXXX”中的XXX copy出来,这个是你要的东东。填写到下图的Eclipse的控制台中,然后回车.
第五步:将获取到的"access_token"(在控制台输出中查找)填入到ShowUser.java文件中,进行如下操作,然后运行程序,将返回你的个人信息。
String access_token = args[0];将args[0]修改为刚才取得的"access_token";
String uid = args[1]; 将args[1]修改为刚才授权用户的ID号;
总结:OAuth2.0的桌面应用非常不友好,以前在1.0中用PIN码授权时,至少用户可以将PIN码从授权页面填入程序的页面,现在的CODE放在地址栏中,只有专业人士才会用,希望SINA在关闭1.0前,能改进现有的验证方式,让用户的验证授权更加友好。
OAuth2.0 API地址:http://open.weibo.com/wiki/Oauth2