yiranpiaoluo 2018-08-29
前言:
微博官方在2017年3月份调整了相关接口,取消了网上现有教程中发送微博(updateStatus)以及发送图片(uploadStatus)的接口,那在微博开发者平台创建应用以后,该如何发送微博与图片呢?
流程:
一、登录开放平台创建应用
二、下载微博开发相关javaSDK,github中下载网络延迟太严重,所以我把我下载好的放上来,需要的可以直接下载了。
三、配置文件。
client_ID = 应该ID client_SERCRET = 应用秘钥 redirect_URI = 授权回调地址 baseURL=https://api.weibo.com/2/ accessTokenURL=https://api.weibo.com/oauth2/access_token authorizeURL=https://api.weibo.com/oauth2/authorize rmURL=https\://rm.api.weibo.com/2/ accessToken=2.00LXQazBiA7gUB88aa39e5ae8mLSVB
四、获取授权码,使用样例操作,获取授权码,注意,该授权码有有效期,开发测试阶段需要每天获取方能顺利测试。
package weibo4j.examples.oauth2; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import weibo4j.Oauth; import weibo4j.model.WeiboException; import weibo4j.util.BareBonesBrowserLaunch; public class OAuth4Code { public static void main(String [] args) throws WeiboException, IOException{ Oauth oauth = new Oauth(); BareBonesBrowserLaunch.openURL(oauth.authorize("code")); System.out.println(oauth.authorize("code")); System.out.print("Hit enter when it's done.[Enter]:"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String code = br.readLine(); Log.logInfo("code: " + code); try{ System.out.println(oauth.getAccessTokenByCode(code)); } catch (WeiboException e) { if(401 == e.getStatusCode()){ Log.logInfo("Unable to get the access token."); }else{ e.printStackTrace(); } } } }
五、进入正题,由于之前版本发送微博、图片的方法已经需要更高的权限才能使用,那小白阶段该如何发送微博与图片呢?使用statuses/share,第三方分享一条链接到微博,也就是说发送的微博内容里面必须要有链接。
仔细看代码与之前的变化:
public Status updateStatus(String status) throws WeiboException { return new Status(client.post(WeiboConfig.getValue("baseURL") + "statuses/share.json", new PostParameter[] { new PostParameter("status", status) }, access_token)); }
public Status uploadStatus(String status, ImageItem item) throws WeiboException { return new Status(client.multPartURL(WeiboConfig.getValue("baseURL") + "statuses/share.json", new PostParameter[] { new PostParameter("status", status) }, item, access_token)); }
具体操作代码如下:
public static void main(String[] args) throws Exception{ Timeline tl = new Timeline("2.00LXQazBiA7gUB88aa39e5ae8mLSVB"); tl.updateStatus("打开支付宝首页搜索“7151437”,即可领红包,淘宝购物可用,下馆子可用,逛超市也可用。http://lxzqz.iteye.com/blog/2423292"); File image = new File("E://picture/IMG_20160209_115848.jpg"); FileInputStream in = new FileInputStream(image); byte[] ba = new byte[in.available()]; in.read(ba); ImageItem it = new ImageItem(ba); //防止发送图片时中文乱码 String content = URLEncoder.encode("打开支付宝首页搜索“7151437”,即可领红包,淘宝购物可用,下馆子可用,逛超市也可用。http://lxzqz.iteye.com/blog/2423292", "UTF-8"); tl.uploadStatus(content, it); in.close(); }
赶紧去尝试一下吧!有不懂的地方欢迎留言。