最近需要用新浪微博的开放平台写个程序,首当其冲的就是程序的接口认证问题。这里正式记录下。

接口认证的直接目标是获取 access_token 值。应用程序通过 access_token 访问用户的微博账号:读取 timeline、读取用户收藏的微博、发表评论……

 

首先是安装和配置。

  1. 去新浪微博的开放平台注册应用程序,注册成功后,需要用到该应用的以下信息:App Key、App Secret、授权回调页(填写一个可访问的网址即可,eg. https://pingx.sh)。
  2. 下载新浪微博提供的 Java SDK,我这里使用的版本是 weibo4j-oauth2-beta2.1.1.zip,下载地址在此

这里有个坑,不得不提醒一下。

新浪微博的 Java SDK 代码托管在 Google Code 上,VCS 采用的是 SVN。但是——SVN 仓库里的代码不是最新的,而是最旧的!(可以通过 svn log -v 查看)。正确的下载应该通过 Downloads 这个链接,下载 .zip 文件。

我一开始没有注意到这点,浪费了不少时间。渣浪这点做得真不专业。

  1. 解压下载好的新浪微博的 Java SDK,该工程名称默认为 weibo4j-oauth2
  2. 用 Eclipse 导入 weibo4j-oauth2 这个工程
  3. 修改 weibo4j-oauth2/src/config.properties 配置文件:client_IDclient_SERCRETredirect_URI 三项值默认为空,需要分别修改为上面提到的 App Key、App Secret、授权回调页。

 

安装、配置过程已完成,接下来便是获取 access_token 值。

如果你完全按照 Google Code 上的说明来测试的话,你又要被渣浪坑了。因为那些说明并不是针对当前最新版本的 SDK 而言的,也就是说,Google Code 上的文档没有更新!这里又算一个坑。

这里的区别在于认证函数的函数参数上有明显变化。认证使用的是 weibo4j.examples.oauth2 这个 package 下的 OAuth4Code.java 源文件。大致看一下函数接口,可以看出新版的 OAuth4Code.java 源文件相对于老版的,main() 函数明显多出来 statescope 两个参数,这些是旧版本所不需要的。

再翻一下新浪微博的开发文档1, 2),不难理解这两个参数的含义与用法。在 Eclipse 中运行 OAuth4Code.java 时,指定参数 test_state friendships_groups_read,friendships_groups_write,statuses_to_me_read 即可。

在 Eclipse 中,如何为程序指定命令行运行参数?鼠标右键:Run As → Run Configurations… → Arguments → Program arguments。

剩下的就简单许多了。运行 OAuth4Code.java,程序会自动调用浏览器,打开授权页面;授权通过后,浏览器会跳转到授权回调页面,通过这个页面的 URL,可以拿到 code 值;将 code 值填入 Eclipse 的 console 下,回车,我们就可以看到梦寐以求的 access_token 值了!

 

下面测试 access_token 是否可用。

在 Eclipse 中,打开 weibo4j.examples.timeline 下面的 GetHomeTimeline.java 源文件,指定运行参数为上面已获得的 access_token 值。运行,不出意外的话,便可以看到自己微博的 timeline 了。

 

参考链接:

Leave a Reply

Your email address will not be published. Required fields are marked *