My favorites | Sign in
Project Home Downloads Issues Source
Project Information
Members
Featured
Downloads

新浪微博API OAuth 2 Java / Android客户端

运行环境

Java 1.5+

依赖:

仅Commons Logging

如果您在Android环境测试成功,欢迎告诉我

下载地址

http://code.google.com/p/sinaweibojava/downloads/list

接口源码:

http://code.google.com/p/sinaweibojava/source/browse/src/com/itranswarp/weibo/api/ApiClient.java

描述文件:

http://code.google.com/p/sinaweibojava/source/browse/codegenerator/weibo.yaml

使用简介

注册微博App后,可以获得app key和app secret,然后定义网站回调地址:

import com.itranswarp.weibo.api.*;

String APP_KEY = "1234567"; // app key
String APP_SECRET = "abcdefghijklmn"; // app secret
String CALLBACK_URL = "http://www.example.com/callback"; // callback url

在网站放置“使用微博账号登录”的链接,当用户点击链接后,引导用户跳转至如下地址:

String url = new ApiClientBuilder(APP_KEY, APP_SECRET).getAuthUrl(CALLBACK_URL);
// TODO: redirect to url

用户授权后,将跳转至网站回调地址,并附加参数code=abcd1234:

// 获取URL参数code:
String code = request.getParameter("code");
ApiClientBuilder builder = new ApiClientBuilder(APP_KEY, APP_SECRET);
AccessToken accessToken = builder.requestAccessToken(code, CALLBACK_URL);
// TODO: 在此可保存accessToken
// 创建ApiClient对象:
ApiClient client = builder.create(accessToken);

然后,可调用任意API:

JsonObject r1 = client.statusesUserTimeline();
JsonObject r2 = client.statusesUpdate("测试OAuth 2.0发微博");
JsonObject r3 = client.statusesUpload("测试OAuth 2.0带图片发微博", new File("/Users/michael/test.png"));

使用限制

仅支持Web方式调用,不支持口令方式验证。

补充说明

JsonObject是有效的Json对象,可根据文档获取任意类型的值,如:

JsonObject jo = ...
String screen_name = jo.get("screen_name");
Long uid = jo.get("uid");
Object[] statuses = jo.get("statuses");

String display_name = jo.get("display_name"); // JsonException! No such field "display_name"!
String display_name = jo.get("display_name", "unknown"); // OK, return "unknown" when no such field.

Long screen_name = jo.get("screen_name"); // ClassCastException! Cannot cast from String to Long!

由于Java静态类型的限制,ApiClient.java和ApiLoader.java代码是通过weibo.yaml描述文件自动生成的。

weibo.yaml包含新浪微博的API描述信息,任何新API必须先添加至weibo.yaml,然后运行Main重新生成代码。

同一个API方法会有多个重载方法,带文件上传的API同时支持File参数和InputStream参数。如果使用InputStream参数,调用者负责关闭流,ApiClient不会自动关闭。

若调用出错,会抛出WeiboApiException,该异常包含errorCode,error和request三个字段,与新浪返回的出错json对应。具体错误原因请查询新浪文档。

若HTTP响应出错(例如404),会抛出IOException。

BUG报告

http://code.google.com/p/sinaweibojava/issues/list

参考

新浪微博API文档:http://open.weibo.com/wiki/

Powered by Google Project Hosting