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

您所在的位置:网站首页 这样发微博 最新JAVA调用新浪微博API之发微博(转)

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

2024-06-29 09:29| 来源: 网络整理| 查看: 265

最近有个项目中需要调用微博的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替换掉即可。这样一个不带图片的微博发送就方法就完成了。

 

public Status updateStatus(String status) throws WeiboException {

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

+ "statuses/update.json",

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

access_token));

}

/**

* 第三方分享微博

* @param status

* @return

* @throws WeiboException

*/

public Status share(String status) throws WeiboException {

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

+ "statuses/share.json",

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

access_token));

}

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

 

public static void main(String[] args) {

String access_token = "2.00**********";

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

Timeline tm = new Timeline(access_token);

try {

Status share = tm.share(statuses);

System.out.println(share);

} catch (WeiboException e) {

e.printStackTrace();

}}

至此微博就发送成功了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3