Git Product home page Git Product logo

douban-java-sdk-oauth2's Introduction

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

注意

现在本SDK是基于豆瓣OAuth 2.0 API的v1版,也就是使用GData 和 Atom作为数据传输类型的版本,使用JSON的v2版本尚未支持。 由于主作者没有更多时间来更新这个SDK,欢迎大家Fork本SDK,如果您做了更新,欢迎发Pull Request给我,我会及时Merge.

功能/优点

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

安装使用

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

  • 使用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
  • 在您的项目中包含SDK全部源码 (**如果能使用Maven请尽量使用Maven,尽量不要使用这种方式**) 那么,您需要自己下载以下依赖:
    • commons-codec-1.9.jar
    • commons-lang-2.6.jar
    • google-http-client-1.10.3-beta.jar
    • gson-2.4.jar
    • guava-14.0.1.jar
    • httpclient-4.5.1.jar
    • httpcore-4.4.3.jar
    • jackson-core-asl-1.9.13.jar
    • json-lib-2.4-jdk15.jar
    • protobuf-java-2.4.1.jar
    • xmlpull-1.1.3.1.jar

可以到这儿下载:http://www.mvnrepository.com/

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

开源使用协议

MIT License

Contributors

douban-java-sdk-oauth2's People

Contributors

corningsun avatar jack80342 avatar uglytroll avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

douban-java-sdk-oauth2's Issues

redirect_url setting is wrong in OAuthDoubanProvider.java

Hi:
I'm using the java-dk recently to find that the redirectUrl doesn't take effect when it comes to OAuthDoubanProvider.tradeAccessTokenWithCode(),after debuging i find that something wrong with this line:

OAuthDoubanProvider.java

params.put("redirect_uri", DefaultConfigs.ACCESS_TOKEN_REDIRECT_URL);

after change it to :

params.put("redirect_uri", this.redirectUrl);

everything is fine.

Is this a bug or sth? Well it did confuse me for a while ....
thanks.

utils Converters.class中报错

public static String parseDoubanObjToXMLStr(T obj) throws IOException {
XmlHttpContent content = new XmlHttpContent(DefaultConfigs.DOUBAN_XML_NAMESPACE, "entry", obj);
ByteArrayOutputStream os = new ByteArrayOutputStream();
content.writeTo(os);
String result = new String(os.toByteArray());
return result;
}

content.writeTo(os);

这块报错看了一下
import com.google.api.client.http.xml.XmlHttpContent; 1.10.3版本
中只有writeTo(XmlSerializer serializer)该方法~~

是不是我这边的问题~

clone 到本地之后使用mvn install 打包,在项目中调用报错

我在测试playground.java的testAccessToken()报错
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/client/methods/HttpRequestBase
at com.dongxuexidu.douban4j.utils.HttpManager.(HttpManager.java:43)
at com.dongxuexidu.douban4j.provider.OAuthDoubanProvider.tradeAccessTokenWithCode(OAuthDoubanProvider.java:154)
at date.demo.testAccessToken(demo.java:41)
at date.demo.main(demo.java:23)
Caused by: java.lang.ClassNotFoundException: org.apache.http.client.methods.HttpRequestBase
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 4 more

使用mvn install 打包显示的是build successfu. 请问调用的时候为什么出现这个问题么?不是所有的依赖都自动下载好了么?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.