Java调用 新浪微博API 接口发微博,逐项讲解,绝对清晰

来源:互联网 发布:浮生一日知乎 编辑:程序博客网 时间:2024/05/01 03:43

转载自:http://www.myexception.cn/program/1930025.html

Java调用 新浪微博API 接口发微博,逐条讲解,绝对清晰


最近要做个课程设计,使用微博控制树莓派,树莓派再控制发光二极管的亮和灭,主要设计分两层,上层是用Java调用新浪微博API来实现对微博旳监听,当我的微博被回复时能够自动读取评论内容,并根据评论的指令内容来决定树莓派的控制动作。下层是用C语言调用操作系统底层接口来实现用树莓派GPIO接口控制发光二极管的闪烁、亮灭。
由于网上教程都很老了,最近微博接口发生了很多变化,所以我决定全新写一篇详细的博文,如若能对您起到帮助作用,那将是我莫大的荣幸。同时我非常希望能与您交流,有问题请在评论里回复我。
本文将终点讲解怎么样申请微博接口,一步步用Java发布自己的微博。【首先你要有微博账号】

一、申请成为开发者
http://open.weibo.com/到这里申请。点击“我的应用”就能看到 身份认证:未认证,自己把该做的做了,这里不详细讲。审核很快的,不到一天就通过。
之后应该是这样的(哈哈,欢迎互粉哈):


二、创建应用
这里网上的教程存在误导性,我按照那些教程来,结果把我拖到了坑里,我已经爬出来了,希望你们不要再掉进去。
如果想用Java来控制微博,那么在创建应用时就不能创建“站内应用”,要创建“移动应用”,注意这一点,不然到了权限验证那一步会通不过的。
“微连接”——“移动应用”——“立即接入”——“继续创建”
现在我们来到了填写信息的地方,自己随便写个应用名字(这名字后期改的话会很麻烦,请一次性填好),例如“手机控制树莓派”,客户端就选“手机”,应用平台选Android就行了,其实无影响。然后“创建”。好了现在又进入了一个新的界面,我们只是用来测试,所以不用审核,除非你想让你的应用上线。


三、重要信息设置与记录
这步很重要,直接关系到以后能不能正确接入。
左侧面板:“应用信息”——“高级信息”
看到“OAuth2.0 授权设置”,点击“编辑”。“授权回调页:”和“取消授权回调页:”很重要,那些创建了“站内应用”的到这里应该哭了,因为他们无法修改“授权回调页:”。。。
那么怎么改呢?两个都改成:https://api.weibo.com/oauth2/default.html,这是微博默认的,我们测试够用了。
如图:


再点击“基本信息”,
如图:


记下:APP Key和App Secret,后面有用。


四、下载微博Java SDK
来这里https://github.com/sunxiaowei2014/weibo4j-oauth2-beta3.1.1/

下载zip压缩包:weibo4j-oauth2-beta3.1.1.zip


五、将SDK导入Eclipse
什么?你一直用文本编辑器写Java?好吧,听我一句劝,写这玩意儿时还是换成Eclipse吧,不然会累死的。
打开Eclipse,“File”——“Import”——“General下面Existing Projects into Workspace”——“Select archive File”——选择刚才的SDK压缩包——“Finish”。
至此导入完成。

六、修改配置信息


打开图中这个config.properties文件,把“client_ID”和“client_SERCRET”后面的值分别改为你记下的“App Key”和“App Secret”。“redirect_URI”的值改为https://api.weibo.com/oauth2/default.html
保存。


七、应用授权
如图:


编译执行OAuth4Code.java文件。
你的浏览器会被自动调用,打开一个授权页面。如下图:


点击“授权”。

转到如下图:


别急着关浏览器!请复制地址栏中code=后面的那一串字符串。
回到Eclipse,下方Console中正等待你输入什么。Hit enter when it's done.[Enter]:
没错,就是他。粘贴你刚才复制的字符串,回车。
好了,等几秒你的授权信息就返回了。
AccessToken [accessToken=xxxxxxxxxxxxxxxx, expireIn=157679999, refreshToken=,uid=xxxxxxxxx]
"access_token"后面的一串字符和"uid"后面的数字很重要,记下来。
现在你可以关闭浏览器了。
这里提醒下,如果当初创建应用是“站内应用”而不是“移动应用”的话,那么这一步不会成功,你看到的永远是“error:redirect_uri_mismatch”的页面。


八:发微博
微博SDK包里面,你看看examples下面有很多程序,这些都是例子,涵盖了该SDK所能做的任何事,你只需参照着写。
weibo4j.examples.timeline这个包里面的UpdateStatus.java是发微博的例子。
我们在src里面建立一个新的package叫做myweibo,下面没必要建立这些类,随意了。


我演示下怎么发微博。
在myweibo下建立新类SendWeibo.java
将examples——weibo4j.examples.timeline——UpdateStatus.java例子程序中的main方法体整个复制过来,粘贴后Eclipse会自动import需要引用的包。
把String access_token=后面换成你刚才的access_token的值。String statuses=后面是你的微博正文。
改完后就是:


然后运行这个Java代码就行了,只要不报错就成功了。去你的微博看看。


注意:如果你不知道一个函数(我还是习惯叫函数,不叫方法)是干啥的, 不知道它的参数含义,请把光标移动到函数上。


SDK里面提供的各种函数都很好用,什么获取微博,获取评论,获取评论ID,回复评论,获取地理位置,获取照片,发照片,获取粉丝关系,获取朋友圈微博等等,太多了,大家自己慢慢尝试吧。


九:发布程序:
如果你要把该程序拿到其他地方运行,比如树莓派Linux或者虚拟机里的Linux上,那么有些地方需要注意。
我们先发布程序:
我们在weibo4j-oauth2这个项目上点右键选“Export”,然后如图:


下一步:


哪个程序是入口,Launch configuration就选哪个,这里我们是执行发微博的程序:SendWeibo。
选好路径,下面的Library Handing选第二个保险一点。然后Finish,可能会弹出警告,不用管,点OK。
然后就生成了。然后你一双击jar包,程序一闪而过,留下了一个weibo.log文件,这里面是日志。万一出错可以查看日志找原因。现在程序被执行了,它又发布了一条微博。
你可以把这文件拖到虚拟机的Linux里,我们见识下Java是如何到处运行的,结果java -jar 1.jar运行后报错了,怎么回事呢?
仔细看看错误信息,里面写着java.net.UnknownHostException,再看看错误信息里是不是写着InetAddress.getLocalHost()这个方法呢,没错就是它造成的。
解决方案:
首先ifconfig看看你的IP,这个不在乎是局域网IP还是外网IP,只要求是你看到的本机IP就行。
修改/etc/hosts这个host文件,加入一行,

你的ip     你的主机名   # KD.localdomain是我的主机名

至于怎么查看主机名,在报错信息里应该有,比如localhost.localdomain之类的。KD.localdomain这个是我自己改的。你也可以查看/etc/hosts来确认你的主机名。
这么修改完以后,再次运行1.jar试试,应该就成功了。我就不截图了。开虚拟机挺麻烦的。
PS:发完微博试试就行了,别乱发,这效果类似于刷屏,会被打的。


调用API这件事有时候很容易出问题,欢迎大家评论交流。我是学Linux内核底层的,搞Java不是很精通,是个半吊子水平,如果班门弄斧了,还请不要见笑。也欢迎大家与我交流Linux问题。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电影院不开空调怎么办 电脑总弹广告怎么办 下雨天了怎么办神接 天下雨了怎么办套路 下雨天了怎么办 新套路 万达兑换券过期怎么办 直播间没一个人怎么办 快手直播人少怎么办 快手直播人气少怎么办 被火山主播踢出房间怎么办 遇到同事的排挤怎么办 交警处理事故不公平怎么办 派出所处理事情不公平怎么办 淘宝号不健康了怎么办 作业盒子忘记密码怎么办 一起作业忘记密码怎么办 手机不能录视频怎么办 网络机顶盒连不上wifi怎么办 obs游戏源黑屏怎么办 微信视频打不开怎么办? xp关闭hdmi声音怎么办 大锅天线无信号怎么办 人喝酒喝醉了怎么办 电信网络电视不清楚怎么办 饭店老板拖欠员工工资怎么办 出国旅游不会英语怎么办 香港转机21小时怎么办 动车坐过站了怎么办 在美国开车超速怎么办? 办出国旅游护照怎么办 中关村三小午饭怎么办 电视不能看直播怎么办 电视系统无信号怎么办 电视视频无信号怎么办 大锅盖没有信号怎么办 锅盖天线没信号怎么办 锅盖天线信号低怎么办 小米盒子没信号怎么办 有线电视没台了怎么办 宝马液晶屏碎了怎么办 电视显示屏坏了怎么办