/Douban-Java-SDK-OAuth2

A Simple Douban Java Windows App

Primary LanguageJava

"人人的SDK太潦草,微博的太混乱,豆瓣儿的不能再这样了"

--- UglyTroLL from 东学西读

豆瓣OAuth2 API Java SDK (几乎完全版) v0.727

豆瓣OAuth2 API Java SDK(由东学西读提供).

欢迎加入东学西读的豆瓣小站.

欢迎访问东学西读.

开源使用协议

MIT License

更新日志

2013-04-01: 新增两个豆瓣V2电影的API: getMoviesTop250 与 getV2MovieInfoById 由Sean Guo贡献

注意

现在本SDK是基于豆瓣OAuth 2.0 API的v1版,也就是使用GData 和 Atom作为数据传输类型的版本,使用JSON的v2版本尚未支持,因为其还处于测试阶段,稳定性和可靠性未知(而基于Atom的API豆瓣已经使用了多年)。 而且v1和v2版本支持的API功能相同,所以暂时没有更换必要,等v2稳定并且成为主流后本SDK会做相应改变。

功能/优点

  • 豆瓣Oauth2认证流程 - 用户登录 从引导用户,用户批准权限换code到用code换accessToken
  • 完备的模型(Model)以及转换器(Parser) - 无需担心数据转换和提取 完美转换豆瓣API所使用的GData/Atom类型的xml以及json致简单易读易懂易用的JavaBean
  • '豆瓣社区/书影音/豆瓣说'全覆盖 - 全面支持豆瓣开放了的API 几乎支持全部豆瓣开放平台中开放了的API
  • 错误处理 - 轻松了解为何出错 对各种Exception的包装,使得错误信息明了,使用简单(无需分门别类catch一大堆Exception)
  • 防误调用 - 减少调用中的问题 精心设计的调用接口,使得无需阅读大量文档也可以轻松使用
  • 多线程/并发支持 - 虽然没测大量并发 但是,谁用谁知道。在没有bug的情况下服务应该是线程安全的 :)

安装使用

有两种方式来整合SDK到您自己的项目中:

  • 在您的项目中包含SDK全部源码 那么,您需要自己下载两个依赖:json-lib 2.3/2.4Google Http Java Client 1.10.x
  • 使用Maven编译打包 - (**推荐**) 由于项目本身就是一个Maven项目,所以使用Maven最方便. 如果您的项目本身就是一个Maven项目,那么直接在您项目的pom.xml中加入依赖:
<dependency>
  <groupId>com.zhibo</groupId>
  <artifactId>Douban4jOAuth2</artifactId>
  <version>1.0-SNAPSHOT</version>
</dependency>

然后编译SDK,编译时请务必跳过所有test(不然会通不过无法编译,因为很多测试用例都是需要accessToken的),编译命令使用mvn package或mvn install,根据您自己的需要(如果您不明白两者的区别,请google Maven的基础知识)。例子如下:

mvn package -Dmaven.test.skip=true

OAuth认证流程

  1. 初始化:
OAuthDoubanProvider oauth = new OAuthDoubanProvider();
oauth.setApiKey("xxx").setSecretKey("xxx");//设置Apikey和secretKey.
/*
也可以在DefaultConfigs中直接填入您的apikey和secretKey,那么就不需要每次都设置这两个值.
*/
oauth.addScope(RequestGrantScope.BASIC_COMMON_SCOPE).addScope(......).//设置权限范围
oauth.setRedirectUrl("http://www.dongxuexidu.com");//设置回调地址
.........
  1. 引导用户至豆瓣认证页面,该页面地址可以通过以下代码拿到:
String redirectUrl = oauth.getGetCodeRedirectUrl();
  1. 通过你的回调地址获得code.
String code = howeverYouGetIt();
  1. 用code换accessToken.
AccessToken at = oauth.tradeAccessTokenWithCode(code);

整个流程在PlayGround.java里面的testAccessToken()方法内有详细可以测试的例子。

豆瓣API调用

请详见Test目录下的全部测试用例

其他说明

  • 参数类型 方法参数中类型为基本类型(如int, long)的说明该参数为必须,参数为包装类型(Integer, Long)的说明可为null且不会有任何问题。
  • 缺豆瓣说里面部分评论相关API 懒了没写
  • 未测试方法 部分未测试方法前含有@UnTested的Annotation,其余皆为已经测试通过的.
  • 未实现部分分支 如豆邮过多需要验证码的引导,如上传本地图片至豆瓣说广播等.
  • 使用实例 使用实例都可以在PlayGround,java和Test目录下找到.
  • 欢迎 有兴趣的同学来一起继续完善这个SDK