一个演示怎样使用 weiboclient4j
的Demo应用:
新浪微博官方推荐的Java客户端 weibo4j 一直没有发布到maven仓库,而我们是重度maven用户,因而重新发明了这个新的轮子。
在项目pom.xml里面加入依赖:
<dependency>
<groupId>com.github.hoverruan</groupId>
<artifactId>weiboclient4j</artifactId>
<version>0.4.16</version>
</dependency>
Weiboclient4j支持新浪微博API V1和V2(未完成),目前推荐使用V2版本的接口:
// 使用你的应用的api key和secret
String apiKey = "xxxxxxx";
String apiSecret = "xxxxxxxx";
WeiboClient client = new WeiboClient(apiKey, apiSecret);
OAuth2例子:
String authorizationCallback = "..."; // 你的Callback地址
String state = "...";
String url = client.getAuthorizationUrl(state, authorizationCallback);
// 浏览器重定向到url; 用户授权; 然后返回callback地址
String code = ... // 从新浪的回调请求里面获得code
String accessTokenCallback = "..."; // 或者Access Token的Callback地址
SinaWeibo2AccessToken accessToken = client.getAccessTokenByCode(code, accessTokenCallback);
System.out.println("Access token: " + accessToken.getToken());
System.out.println("User Uid: " + accessToken.getUid());
System.out.println("Expires in: " + accessToken.getExpiresIn());
System.out.println("Remind in: " + accessToken.getRemindIn());
获取用户Timeline例子:
String accessToken = "xxxxxxx";
WeiboClient client = new WeiboClient(accessToken);
StatusService service = client.getStatusService();
Timeline friendsTimeline = service.getFriendsTimeline();
更多的使用例子可以参考 weiboclient4j.examples.OAuth2CommandLine
WeiboClient里面,大部分的方法都没有Javadoc,取而代之的是大部分的参数都是特定的对象,这样做的原因是因为:
- 写Javadoc太麻烦
- 一些API的参数较多,如果使用基本类型容易混淆各个参数的含义
- IDE对已知类型的对象、Enum能提供更友好的提醒和自动完成
所有的参数对象在 package weiboclient4j.params
下面;举一个例子:
使用静态引入 CoreParameters.*:
import static weiboclient4j.params.CoreParameters.*;
FriendshipService service = client.getFriendshipService();
Friendship friendship;
friendship = service.getFriendship(sourceUid(12345), targetUid(67890));
// 或者
friendship = service.getFriendship(sourceScreenName("xxx"), targetScreenName("yyy"));
使用 P:
import weiboclient4j.params.P;
FriendshipService service = client.getFriendshipService();
Friendship friendship;
friendship = service.getFriendship(P.sourceUid(12345), P.targetUid(67890));
// 或者
friendship = service.getFriendship(P.sourceScreenName("xxx"), P.targetScreenName("yyy"));
分页相关的参数,全部通过 Paging
对象封装:
Paging paging = Paging.create()
.sinceId(12345)
.count(25);
Timeline timeline = service.getFriendsTimeline(paging, BaseApp.No, Feature.All); // 后两个参数可省略
微博接口 | StatusService | 完成 |
评论接口 | CommentService | 完成 |
用户接口 | UserService | 完成 |
关系接口 | FriendshipService | 完成 |
帐号接口 | AccountService | 完成 |
收藏接口 | FavoriteService | 完成 |
话题接口 | TrendService | 完成 |
标签接口 | TagService | 完成 |
注册接口 | RegisterService | 完成 |
搜索接口 | SearchService | 完成 |
推荐接口 | SuggestionService | 完成 |
提醒接口 | RemindService | 完成 |
短链接口 | ShortUrlService | 完成 |
通知接口 | NotificationService | 完成 |
公共服务接口 | CommonService | 完成 |
位置服务接口 | PlaceService | 完成 |
地理信息接口 | LocationService | 开发中 |
阮永沛Hover @ 新浪微博
- 0.4.18
- 在SinaWeibo2AccessTokenResponse添加isRealName字段
- 0.4.17
- 优化错误提示
- 0.4.16
- 添加ForceLogin选项
- 0.4.15
- 实现"获取Token信息"接口
- 0.4.14
- 将默认的grantType设置为AuthorizationCode
- 将UnreadCount的V1的字段删除
- 添加简化的获取AccessToken的方法
- 在User中添加attitudes字段
- 0.4.13
- 修复WeiboClient使用AccessToken初始化时的一个问题
- 0.4.12
- 将get(...)和post(...)方法添加到WeiboClient
- 0.4.11
- 修复FloatParam没法添加参数的问题
- 在WeiboClient添加getPlaceService()方法
- 0.4.10
- 在User中添加新字段:verifiedType
- 0.4.9
- 在User中添加两个新字段:avatarLarge和verifiedReason
- 0.4.8
- 抛出OAuthException
- 修复获取转发列表的一个BUG
- 0.4.7
- 处理OAuth的异常
- 0.4.6
- 添加微博错误代码
- 去掉了一些已经不存的接口
- 0.4.5
- 修复上传图片的错误
- 0.4.4
- 实现上传图片以及发送多图微博的接口
- 支持password类型的grant_type认证
- 0.4.3
- 实现地理接口中的"坐标转换接口"
- 引入 weiboclient4j.params.P 简化参数对象的创建
- 实现地理接口中的"生成一张静态的地图图片"接口
- 将model中的字段hasvisible改名成visible
- 0.4.2
- 将WeiboClient2重命名为WeiboClient
- 0.4.1
- Fixed #7
- 0.4.0
- 添加CoreParameters语法糖
- 去掉第一版的API支持
- 添加travis-ci.org自动构建状态
- 重构各个Service,使用可变参数
- 0.3.3
- 完成所有的位置服务的接口
- 0.3.2
- 实现位置接口中的"获取用户的todo列表"接口
- 实现位置接口中的"获取用户的点评列表"接口
- 实现位置接口中的"获取用户的照片列表"接口
- 实现位置接口中的"获取用户签到过的地点列表"接口
- 实现推荐接口中的"获取用户可能感兴趣的人"接口
- 将 Access Token 放到 HTTP Header 中
- 为上传图片功能添加几个快捷方法
- 0.3.1
- 实现位置服务 (PlaceService) 中的用户读取接口
- 实现上传图片并发布一条微博的接口 (http://open.weibo.com/wiki/2/statuses/upload)
- 实现位置服务 (PlaceService) 中的动态读取接口
- 0.3.0
- 将新浪微博接口2.0的实现从巨大的 WeiboClient2 分离到多个小的 Service 中
- 0.2.x
- 实现新浪微博接口2.0的主要功能
- 0.1
- 实现新浪微博接口1.0的主要功能