編寫調(diào)用新浪微博API的Java程序來發(fā)送微博
首先,需要下載新浪微博的SDK,這里附上地址:http://vdisk.weibo.com/s/z7iFc2gCCwC1b
下載完了之后解壓,然后打開myeclipse,新建項(xiàng)目,再把剛才解壓出來的Import到項(xiàng)目中。如圖所示:
接下來,到這個(gè)網(wǎng)址http://open.weibo.com/注冊應(yīng)用。有三種應(yīng)用,選擇站內(nèi)應(yīng)用,然后創(chuàng)建應(yīng)用。把該填寫的都填寫上。確認(rèn)就ok。需要注意的是有兩點(diǎn):
1,是注冊完應(yīng)用,會(huì)有App Key以及App Secret,這個(gè)接下來會(huì)用到。
2,到《我的應(yīng)用》,選擇:應(yīng)用信息,
點(diǎn)擊“編輯”,然后注意到有兩個(gè)地址:其中“應(yīng)用實(shí)際地址”要慎重填寫,我的是http://127.0.0.1/callback.jsp,注意地址后面不要有“/”這些?,F(xiàn)在,記住這個(gè)地址,接下來要用到。
現(xiàn)在,轉(zhuǎn)向myeclipse,src下,有config.properties文件,編輯它
client_ID就是App key。
client_SERCRET就是App Secret
redirect_URI就是之前著重提到的那個(gè)地址:http://127.0.0.1/callback.jsp
保存。
接下來,我們發(fā)送一條微博:
examples下,weibo4j.examples.oauth2包下:OAuth4Code類,直接運(yùn)行:會(huì)出現(xiàn)應(yīng)用授權(quán)頁面,輸入用戶名和密碼之后,就會(huì)跳到之前填寫的那個(gè)redirect_URI頁面。如果瀏覽器中保存著微博的信息,則不經(jīng)過這個(gè)頁面而直接跳轉(zhuǎn)到redirect_URI頁面。
在跳轉(zhuǎn)到redirect_URI頁面后,看到URL地址欄里,格式是redirect_URI?code=xxxxxx。下面,復(fù)制code的值,然后進(jìn)入到myeclipse的控制臺(tái)輸出那里,看到:
code=https://api.weibo.com/oauth2/authorize?client_id=1458508643&redirect_uri=http://127.0.0.1/callback.jsp&response_type=code Hit enter when it's done.[Enter]:
接下來,粘帖code到[Enter]:后面?;剀?。就會(huì)看到一大堆輸出信息。
直接跳到最后,看到access_token,這個(gè)就是我們需要的東西了,記錄下來。
接下來發(fā)送微博:
在weibo4j.examples.timeline包下,UpdateStatus類下/
需要傳遞兩個(gè)參數(shù)進(jìn)去,我就直接寫了進(jìn)去。代碼如下:
packageweibo4j.examples.timeline; importweibo4j.Timeline; importweibo4j.Weibo; importweibo4j.examples.oauth2.Log; importweibo4j.model.Status; importweibo4j.model.WeiboException; publicclassUpdateStatus { publicstaticvoidmain(String[] args) { String access_token = "2.00lBvA1CxikhaBfbc0d2a0c10FWttI"; String statuses = "此條微博來自星光發(fā)布系統(tǒng)發(fā)布"; Weibo weibo = newWeibo(); weibo.setToken(access_token); Timeline tm = newTimeline(); try{ Status status = tm.UpdateStatus(statuses); Log.logInfo(status.toString()); } catch(WeiboException e) { e.printStackTrace(); } } } package weibo4j.examples.timeline; import weibo4j.Timeline; import weibo4j.Weibo; import weibo4j.examples.oauth2.Log; import weibo4j.model.Status; import weibo4j.model.WeiboException; public class UpdateStatus { public static void main(String[] args) { String access_token = "2.00lBvA1CxikhaBfbc0d2a0c10FWttI"; String statuses = "此條微博來自星光發(fā)布系統(tǒng)發(fā)布"; Weibo weibo = new Weibo(); weibo.setToken(access_token); Timeline tm = new Timeline(); try { Status status = tm.UpdateStatus(statuses); Log.logInfo(status.toString()); } catch (WeiboException e) { e.printStackTrace(); } } }
statuses就是想要發(fā)表的東西。
到此,就可以發(fā)送微博了。
有問題留言。!
附:
有時(shí)候,比如用另外一個(gè)微博帳號(hào)(就是區(qū)別于注冊應(yīng)用的這個(gè)帳號(hào))時(shí),會(huì)出現(xiàn)一些錯(cuò)誤。錯(cuò)誤信息:
{"error":"applications over the unaudited use restrictions!","error_code":21321,"request":"/2/statuses/update.json"} eibo4j.model.WeiboException: 403:The request is understood, but it has been refused. An accompanying error message will explain why. error:applications over the unaudited use restrictions! error_code:21321/2/statuses/update.json at weibo4j.http.HttpClient.httpRequest(HttpClient.java:414) at weibo4j.http.HttpClient.httpRequest(HttpClient.java:372) at weibo4j.http.HttpClient.post(HttpClient.java:301) at weibo4j.http.HttpClient.post(HttpClient.java:286) at weibo4j.Timeline.UpdateStatus(Timeline.java:708) at weibo4j.examples.timeline.UpdateStatus.main(UpdateStatus.java:18) {"error":"applications over the unaudited use restrictions!","error_code":21321,"request":"/2/statuses/update.json"} weibo4j.model.WeiboException: 403:The request is understood, but it has been refused. An accompanying error message will explain why. error:applications over the unaudited use restrictions! error_code:21321/2/statuses/update.json at weibo4j.http.HttpClient.httpRequest(HttpClient.java:414) at weibo4j.http.HttpClient.httpRequest(HttpClient.java:372) at weibo4j.http.HttpClient.post(HttpClient.java:301) at weibo4j.http.HttpClient.post(HttpClient.java:286) at weibo4j.Timeline.UpdateStatus(Timeline.java:708) at weibo4j.examples.timeline.UpdateStatus.main(UpdateStatus.java:18)
這個(gè)的解決辦法:還是在我的應(yīng)用那里,點(diǎn)擊”應(yīng)用信息“,”測試賬號(hào)“,看到有添加測試賬號(hào),這個(gè)時(shí)候,你把想要發(fā)布微博的帳號(hào)的用戶昵稱添加進(jìn)去,就OK。
相關(guān)文章
java.lang.ArrayIndexOutOfBoundsException數(shù)組越界異常問題解決
這篇文章主要給大家介紹了關(guān)于java.lang.ArrayIndexOutOfBoundsException數(shù)組越界異常問題解決的相關(guān)資料,數(shù)組越界訪問是一個(gè)非常嚴(yán)重的問題,文中通過圖文將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01iOS socket網(wǎng)絡(luò)編程實(shí)例詳解
socket是一個(gè)針對TCP和UDP編程的接口,你可以借助它建立TCP連接等。這篇文章主要介紹了iOS socket網(wǎng)絡(luò)編程 ,需要的朋友可以參考下2017-03-03java開發(fā)中常遇到的各種難點(diǎn)以及解決思路方案
Java項(xiàng)目是一個(gè)復(fù)雜的軟件開發(fā)過程,其中會(huì)涉及到很多技術(shù)難點(diǎn),這篇文章主要給大家介紹了關(guān)于java開發(fā)中常遇到的各種難點(diǎn)以及解決思路方案的相關(guān)資料,需要的朋友可以參考下2023-07-07Intellij IDEA 旗艦版創(chuàng)建 Spring MVC 項(xiàng)目踩過的坑
IDEA旗艦版可以直接創(chuàng)建Spring MVC項(xiàng)目,但創(chuàng)建后的項(xiàng)目并不是直接就可以運(yùn)行,還需要進(jìn)行一些配置。這篇文章主要介紹了Intellij IDEA 旗艦版創(chuàng)建 Spring MVC 項(xiàng)目踩坑記 ,需要的朋友可以參考下2020-03-035分鐘讓你快速掌握java8 stream常用開發(fā)技巧
這篇文章主要給大家介紹了關(guān)于java8 stream常用開發(fā)技巧的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12System.getProperty(“l(fā)ine.separator“)含義及意義詳解
這篇文章主要介紹了System.getProperty(“l(fā)ine.separator“)含義,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05