`
yymmiinngg
  • 浏览: 178367 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

新浪微博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)文件快照。

分享到:
评论
1 楼 =寂寞_狐狸= 2012-06-28  
新浪的api哥都在干啥啊??简直蛋疼惨了~~~~我这边在用~~~旁边那哥们儿也在用  结果token 被随机乱赋值给了不同用户~~~操蛋~~这尼玛~~简直坑爹啊~~~

相关推荐

Global site tag (gtag.js) - Google Analytics