Java调用第三方微博登录实例
最近在维护一个类似消息推送矩阵的项目,里面用到了微博第三方登录接口的调用,在调试的过程中遇到不少障碍,顺手把这些坑记录下来,作为大家的前车之鉴。
调用新浪微博登录
1.创建应用
打开微博开放平台 http://open.weibo.com 登录微博账号 >> 我的应用 >> 开发者信息 >> 现在就去完善
创建应用
应用地址 是必须填写的,而且必须是域名的格式,还有 App Key 和 App Secret 是之后要用的,很重要。
图片如果测试的话,随便上传就好了,符合像素和文件大小即可。
按要求填写完之后,在高级信息里填写回调地址,就是你应用里的实际授权地址,用于获取access_token。
提交审核,一天之后就可等到提交结果,提交失败或者没有提交,也是可以使用的,不影响测试。
需要下载新浪微博API,地址 http://open.weibo.com/wiki/SDK ,选择java SDK
阅读readme.txt ,根据里面的说明我们知道要修改三个值。
修改Config.properties里的client_ID,client_SERCRET,redirect_URI
这三个参数都必须和应用上的一致,否则会出问题。
运行examples包下的weibo4j.examples.oauth2里的Oauth4Code.java
打开如下界面
登录后,会自动跳到你的回调地址,地址栏中显示的是http://www.test.com/CallBack/sina?code=
将code填入控制台,回车就能获得2.0的授权码access_token了。
获取授权码之后,可以根据新浪开放平台的API文档调用接口了。
http://open.weibo.com/wiki/微博API
用到的接口点进去看,里面写的很官方很准确。
·需要注意的是,新浪微博的发布微博接口进行了更新,也就是说这方面的老接口已经不能使用了。
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的灵异事件。