欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

最新JAVA调用新浪微博API之发微博

程序员文章站 2023-12-22 14:10:58
...

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

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

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

最新JAVA调用新浪微博API之发微博

二,应用相关设置

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

最新JAVA调用新浪微博API之发微博

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

最新JAVA调用新浪微博API之发微博

三,下载微博java sdk

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

最新JAVA调用新浪微博API之发微博

四 ,运行实例获取授权码

配置文件修改完毕后,首先打开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调用新浪微博API之发微博
我们使用该接口发送一条微博,由于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();
		}}
最新JAVA调用新浪微博API之发微博
至此微博就发送成功了。

上一篇:

下一篇: