Java调用第三方微博登录实例

最近在维护一个类似消息推送矩阵的项目,里面用到了微博第三方登录接口的调用,在调试的过程中遇到不少障碍,顺手把这些坑记录下来,作为大家的前车之鉴。

调用新浪微博登录

1.创建应用

打开微博开放平台 http://open.weibo.com 登录微博账号 >> 我的应用 >> 开发者信息 >> 现在就去完善

javabus网站 微博 微博java客户端_API


创建应用

javabus网站 微博 微博java客户端_第三方登录_02


应用地址 是必须填写的,而且必须是域名的格式,还有 App KeyApp Secret 是之后要用的,很重要。

图片如果测试的话,随便上传就好了,符合像素和文件大小即可。

按要求填写完之后,在高级信息里填写回调地址,就是你应用里的实际授权地址,用于获取access_token。

javabus网站 微博 微博java客户端_javabus网站 微博_03


提交审核,一天之后就可等到提交结果,提交失败或者没有提交,也是可以使用的,不影响测试。

javabus网站 微博 微博java客户端_Java_04


需要下载新浪微博API,地址 http://open.weibo.com/wiki/SDK ,选择java SDK

javabus网站 微博 微博java客户端_第三方登录_05


阅读readme.txt ,根据里面的说明我们知道要修改三个值。

javabus网站 微博 微博java客户端_第三方登录_06


修改Config.properties里的client_ID,client_SERCRET,redirect_URI

这三个参数都必须和应用上的一致,否则会出问题。

javabus网站 微博 微博java客户端_微博_07


运行examples包下的weibo4j.examples.oauth2里的Oauth4Code.java

打开如下界面

javabus网站 微博 微博java客户端_微博_08


登录后,会自动跳到你的回调地址,地址栏中显示的是http://www.test.com/CallBack/sina?code=

javabus网站 微博 微博java客户端_微博_09


将code填入控制台,回车就能获得2.0的授权码access_token了。

获取授权码之后,可以根据新浪开放平台的API文档调用接口了。

http://open.weibo.com/wiki/微博API

javabus网站 微博 微博java客户端_Java_10


用到的接口点进去看,里面写的很官方很准确。

·需要注意的是,新浪微博的发布微博接口进行了更新,也就是说这方面的老接口已经不能使用了。
2017-06-26微博公告替换了一些接口,导致以前的:

statuses/repost 转发一条微博

statuses/update 发布一条微博

statuses/upload 上传图片并发布一条微博

statuses/upload_url_text 发布一条微博同时指定上传的图片

statuses/destroy 删除微博

无法使用。公司项目的微博分享也不能使用了。

全部替换成新的接口:

statuses/share 第三方分享链接到微博

需要修改一下你下载的新浪API,在方法名 、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));
	}
如果项目里用到测试账号的话,必须在你的开发者应用里添加微博用户,不然会发生有code但无法获取access_token的灵异事件。

javabus网站 微博 微博java客户端_第三方登录_11