注:本文代码已失效,请不要模仿之,其他方式请参考使用scribe方式

最近研究了下新浪微博的开发api,尝试在某些客户端应用中也能够调用相应的api发送新浪微博,经过一番的尝试,最后成功。现将其中的几个关键点,以及相应的demo公示如下,供大家了解。

在本文中,主要演示了如何通过用户名/密码的方式,连接上新浪微博,然后读取最新的微博信息,最后演示如何发送一条简单的微博,其它的都可以通过相应的微博api进行处理,这里就没有仔细深入了。

首先得申请开发者授权,也就是你得在新浪上申请一个应用。直接通过地址为:http://open.weibo.com/,使用你的微博帐号登陆之后,创建一个应用即可。创建应用的目的在于获取相应的app Key和app Secret,在后面的主要api中,均会使用到app key,以便于新浪官方跟踪请求来源。具体流程,请google之。

申请好了之后,我们就开始我们的api之旅了,在本文中,没有使用官方提供的java sdk,因为主是简单的demo,如果是应用开发,还是可以下载相应的java sdk应用的,可以查看其中的example,了解如何进行调用。

本文使用了httpclient,使用maven的话,可以使用groupId为commons-httpclient,artifactId为commons-httpclient将其导入到工程中。其次,为了便于解析返回的数据,使用了JSON组件(fastjson),用于解析json字符串。

获取应用授权,即允许应用访问用户相应信息(除用户名,密码)

由于新浪使用了auth2.0,所以整个登陆过程分为了两个部分,一个部分即是登陆授权,即允许我们的应用访问指定用户的相应信息,这里的信息不包括用户名,密码。在类似网页的应用中,即通过弹出一个新浪的登陆框,用户通过输入完用户名,密码之后,并且授权应用使用,新浪验证通过之后,再返回到我们应用所在的主界面中来。第二个部分,即是获取到相应的token,即相当于用户session,以便在后面的操作中,使用此token进行数据访问。

应用授权的地址为:https://api.weibo.com/oauth2/authorize,整个代码如下所示:

获取access_token

api参考界面:http://open.weibo.com/wiki/OAuth2/access_token

整个代码如下所示:

获取最新的微博信息列表

api参考界面:http://open.weibo.com/wiki/2/statuses/home_timeline

代码如下:

发一条微博信息

api参考:http://open.weibo.com/wiki/2/statuses/update

代码如下:

结论

其实,整个过程还是很简单的,最主要的还是最开始两步的登陆和获取授权,这两步通了,后面的都是进行json请求,然后传递参数,获取结果,再处理结果的问题了。

值得注意的是,在第二步的获取access_token中,官方文档中写可以通过grant_type=password,即输入用户名密码的方式获取到token信息。不过,这种方式需要特殊的申请,具体申请步骤复杂且必须通过官方的审核,非一般开发人员能够弄得好的。所以这里就没有使用这种(当然使用这种方式的话,可以将第一步和第二步,合二为一)。


作者: flym