新浪微博官方推荐的Java客户端 weibo4j 一直没有发布到maven仓库,而我们是重度maven用户,因而重新发明了这个新的轮子。
通过maven引用weiboclient4j在项目pom.xml里面加入依赖:
com.github.hoverruan weiboclient4j 0.4.13使用Weiboclient4j支持新浪微博APIV1和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(ResponseType.Code, DisplayType.Default, 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例子:
StatusService service = client.getStatusService(); Timeline friendsTimeline = service.getFriendsTimeline();更多的使用例子可以参考 weiboclient4j.examples.OAuth2CommandLine
API参数对象化WeiboClient里面,大部分的方法都没有Javadoc,取而代之的是大部分的参数都是特定的对象,这样做的原因是因为:
写Javadoc太麻烦
一些API的参数较多,如果使用基本类型容易混淆各个参数的含义
IDE对已知类型的对象、Enum能提供更友好的提醒和自动完成
所有的参数对象在 packageweiboclient4j.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 = Paging.create() .sinceId(12345) .count(25); Timeline timeline = service.getFriendsTimeline(paging, BaseApp.No, Feature.All); // 后两个参数可省略新浪微博APIV2支持情况API文档V2
微博接口StatusService完成评论接口CommentService完成用户接口UserService完成关系接口FriendshipService完成帐号接口AccountService完成收藏接口FavoriteService完成话题接口TrendService完成标签接口TagService完成注册接口RegisterService完成搜索接口SearchService完成推荐接口SuggestionService完成提醒接口RemindService完成短链接口ShortUrlService完成通知接口NotificationService完成公共服务接口CommonService完成位置服务接口PlaceService完成地理信息接口LocationService开发中
评论