最新JAVA调用新浪微博API之发微博(转)

最近有个项目中需要调用微博的api发新微博,网上找了很多相关教程,遇到了很多坑。后来给官方发邮件询问才知道微博官方早在2017年3月份就调整了相关接口,取消了网上现有教程中的发送微博的接口(updateStatus),导致如果再调用此接口都会提示权限不足,当时折腾了好久。特此发一篇新的文章,希望大家不要掉进坑。

一,登录开放平台创建应用

 

首先需要去微博开放平台申请开发者账号创建新应用。可直接用用微博账号登录,登录后点击微连接选择其他根据自己需要(客户端,网页应用和浏览器插件)选择创建新应用。

二,应用相关设置

首先在应用信息中编辑应用的基本信息包括应用介绍用途什么的,一定要填写安全域名,自己做测试可随便填,企业应用时应填写企业的相关域名。

还需要在应用高级信息中设置OAuth2.0的授权回调页面,这个测试时也可以随便填写,当应用发起用户授权时成功或则取消跳转的页面地址。

三,下载微博java sdk

sdk下载地址点击后回跳到github页面,页面也有实例提示如何使用,下载即可。下载后导入代码编辑器中。最重要的一步:修改config.properties文件中的字段值。值的来源都是应用信息中。

四 ,运行实例获取授权码

配置文件修改完毕后,首先打开examples包下的oauth2.0下的OAuth4Code.java文件,直接用运行main方法即可。此刻默认浏览器会打开用户授权页面,授权后浏览器地址最后会多出一个code=******,复制该code粘贴到编辑器的控制台,然后回车,就会返回授权信息。

复制返回的授权信息中的accessToken的值,该值为授权码。

AccessToken [accessToken=2.00******, expireIn=11255**, refreshToken=,uid=****]有了该授权码,接着我们就可以正式操作微博了。

注:在微博api中所有的操作都是需要经过OAuth2.0授权的,调用每个方法都需要一个授权码,未经审核的应用授权码只有一天的有效期,通过后有30天的有效期,而如果是应用所属的开发者授权时是5年。所以开发者需要在调用时应判断授权码有效期,过期应引导用户重新授权。

五,api应用之发微博

在examples包下全是微博官方api实例,之前的发送微博接口在weibo4j.examples.timeline下。其中UpdateStatus.java和Upload.java一个是发送微博文字一个是发送带图片的微博实例。打开后发现微博发送都是调用的weibo4j.Timeline.java的类。

但是微博官方已经取消了updateStatus等相关发送微博接口,这些接口都不能再调用了,但是java的sdk由于是2014的版本,所以里面还是存在这些方法。随之替代以前updateStatus接口的是statuses/share(第三方分享链接到微博)

我们使用该接口发送一条微博,由于java sdk是2014的版本所以该版本中并没有该接口方法,所以我们需要自己按照他的调用方式写一个新的接口。由于该接口只有个两个是必须的参数一个微博文字和授权码,和updateStatus的类似。所以我们可以打开weibo4j.Timeline.java中找到updateStatus的方法,复制一份改掉方法名,将json替换掉即可。这样一个不带图片的微博发送就方法就完成了。

 
  1. public Status updateStatus(String status) throws WeiboException {

  2. return new Status(client.post(WeiboConfig.getValue("baseURL")

  3. + "statuses/update.json",

  4. new PostParameter[] { new PostParameter("status", status) },

  5. access_token));

  6. }

  7. /**

  8. * 第三方分享微博

  9. * @param status

  10. * @return

  11. * @throws WeiboException

  12. */

  13. public Status share(String status) throws WeiboException {

  14. return new Status(client.post(WeiboConfig.getValue("baseURL")

  15. + "statuses/share.json",

  16. new PostParameter[] { new PostParameter("status", status) },

  17. access_token));

  18. }

接着我们调用一下该方法,由于该接口是第三方分享到微博,所以内容中必须带一个第三方地址详见该接口参数说明,地址必须是应用设置中的安全域名下的URL。

 
  1. public static void main(String[] args) {

  2. String access_token = "2.00**********";

  3. String statuses = "该条微博由JAVA程序发送,目的测试其微博相关api,并无实际用途。https://baike.baidu.com/item/Java/85979?fr=aladdin";

  4. Timeline tm = new Timeline(access_token);

  5. try {

  6. Status share = tm.share(statuses);

  7. System.out.println(share);

  8. } catch (WeiboException e) {

  9. e.printStackTrace();

  10. }}

至此微博就发送成功了。

转载于:https://my.oschina.net/cloudanddata/blog/1913599

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值