新浪微博API的JAVA SDK之神级超鬼BUG

这些天在使用新浪微博的API和SDK写些东东,客服告诉我要使用 oauth2 版本,因为第1代已经申请不到appKey了,于是我下载了一个java版本的sdk。下载地址:http://code.google.com/p/weibo4j/downloads/detail?name=weibo4j-oauth2-beta2.0.zip

以下,使用 weibo4j-oauth2-beta2.0.zip 的过程中发现的问题:

// 从新浪微博的登录页面callback后的处理

String code = request.getParameter("code");
// 第1步
Oauth oauth = new Oauth();
AccessToken token = oauth.getAccessTokenByCode(code);
// 第2步
Weibo weibo = new Weibo();
weibo.setToken(token.getAccessToken());
// 第3步
Account account = new Account();
// 以下是取得授权用户(也就是登录用户)的ID
account.getUid();
/**
可以看到问题出在第2步到第3步之间没有任何引用的关连,通过查看sdk的代码,发现其中的关连是Weibo.client ,而client的声明是public static HttpClient client = new HttpClient();

并且是通过以下方法对client中的token进行赋值:
public synchronized void setToken(String token) {
client.setToken(token);
}

首先,我没看懂setToken方法用到的synchronized 是起到什么作用……好吧,我承认学艺不精。
其次,从第2步到第3步之间的过渡如果没有进行线程同步,那么会出现account.getUid() 取得其它用户的uid的问题,至于怎么出现的你懂的……我擦,我表示“尼玛,坑爹呀”。
补充,如果这个sdk用于客户端并只允许单用户登录那就不存在什么问题了,可这个偏偏是通 request.getParameter("code"); 获得token的……至此,我觉得我技术生涯的BUG都弱爆了。
所以,蛋粹一地,拜托了!因为亿万人在看……最后,新浪微博API哥,太浪会出大问题的,当心VT二连让你超鬼。
*/

 

我表示并没有故意诋毁之意。只是以此来提醒正在使用或准备开发新浪微博app的弟兄们。

 

注:博文下方的下载链接是weibo4j-oauth2-beta2.0.zip(2012/04/09)文件快照。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值