Java調用 新浪微博API 接口發微博,逐條講解,絕對清晰


最近要做個課程設計,使用微博控制樹莓派,樹莓派再控制發光二極管的亮和滅,主要設計分兩層,上層是用Java調用新浪微博API來實現對微博旳監聽,當我的微博被回覆時能夠自動讀取評論內容,並根據評論的指令內容來決定樹莓派的控制動作。下層是用C語言調用操作系統底層接口來實現用樹莓派GPIO接口控制發光二極管的閃爍、亮滅。

由於網上教程都很老了,最近微博接口發生了很多變化,所以我決定全新寫一篇詳細的博文,如若能對您起到幫助作用,那將是我莫大的榮幸。同時我非常希望能與您交流,有問題請在評論裏回覆我。

本文將終點講解怎麼樣申請微博接口,一步步用Java發佈自己的微博。【首先你要有微博賬號】


一、申請成爲開發者

http://open.weibo.com/到這裏申請。點擊“我的應用”就能看到 身份認證:未認證,自己把該做的做了,這裏不詳細講。審覈很快的,不到一天就通過。

之後應該是這樣的(哈哈,歡迎互粉哈):

wKioL1Vn_DyiB2yqAAHwuenYEqQ790.jpg


二、創建應用

這裏網上的教程存在誤導性,我按照那些教程來,結果把我拖到了坑裏,我已經爬出來了,希望你們不要再掉進去。

如果想用Java來控制微博,那麼在創建應用時就不能創建“站內應用”,要創建“移動應用”,注意這一點,不然到了權限驗證那一步會通不過的。

“微連接”——“移動應用”——“立即接入”——“繼續創建”

現在我們來到了填寫信息的地方,自己隨便寫個應用名字(這名字後期改的話會很麻煩,請一次性填好),例如“手機控制樹莓派”,客戶端就選“手機”,應用平臺選Android就行了,其實無影響。然後“創建”。好了現在又進入了一個新的界面,我們只是用來測試,所以不用審覈,除非你想讓你的應用上線。


三、重要信息設置與記錄

這步很重要,直接關係到以後能不能正確接入。

左側面板:“應用信息”——“高級信息”

看到“OAuth2.0 授權設置”,點擊“編輯”。“授權回調頁:”和“取消授權回調頁:”很重要,那些創建了“站內應用”的到這裏應該哭了,因爲他們無法修改“授權回調頁:”。。。

那麼怎麼改呢?兩個都改成:https://api.weibo.com/oauth2/default.html,這是微博默認的,我們測試夠用了。

如圖:

wKioL1Vn_wmiZ0_aAAF-7mev0Kc295.jpg


再點擊“基本信息”,

如圖:wKiom1Vn_eOR1xBmAAEJiR5xCfA660.jpg


記下: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”。

至此導入完成。


六、修改配置信息

wKioL1VoAbbBXpjSAAEMFDsYUNU377.jpg

打開圖中這個config.properties文件,把“client_ID”和“client_SERCRET”後面的值分別改爲你記下的“App Key”和“App Secret”。“redirect_URI”的值改爲https://api.weibo.com/oauth2/default.html

保存。


七、應用授權

如圖:

wKioL1VoAujygcOEAADoBJD-UBI056.jpg

編譯執行OAuth4Code.java文件。

你的瀏覽器會被自動調用,打開一個授權頁面。如下圖:

wKiom1VoAaXRGAkgAAHaq7_eeUo210.jpg

點擊“授權”。

轉到如下圖:

wKiom1VoAc_RDrMQAABFHEoBuA0163.jpg

別急着關瀏覽器!請複製地址欄中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,然後在之下建立幾個新的類,這裏我已經建立了好幾個。

wKiom1VoDtjTTM76AADftlANLSg821.jpg

我演示下怎麼發微博。

在myweibo下建立新類SendWeibo.java

將examples——weibo4j.examples.timeline——UpdateStatus.java例子程序中的main方法體整個複製過來,粘貼後Eclipse會自動import需要引用的包。

把String access_token=後面換成你剛纔的access_token的值。String statuses=後面是你的微博正文。

改完後就是:

wKioL1VoBmzQvhEPAAHyhEcIics313.jpg

然後運行這個Java代碼就行了,只要不報錯就成功了。去你的微博看看。

wKiom1VoBdHCf1VZAAEVzSldMQQ436.jpg


注意:如果你不知道一個函數(我還是習慣叫函數,不叫方法)是幹啥的, 不知道它的參數含義,請把光標移動到函數上。

wKioL1VoGCmD9PSxAAJlHd335ao427.jpg


SDK裏面提供的各種函數都很好用,什麼獲取微博,獲取評論,獲取評論ID,回覆評論,獲取地理位置,獲取照片,發照片,獲取粉絲關係,獲取朋友圈微博等等,太多了,大家自己慢慢嘗試吧。


九:發佈程序:

如果你要把該程序拿到其他地方運行,比如樹莓派Linux或者虛擬機裏的Linux上,那麼有些地方需要注意。

我們先發布程序:

我們在weibo4j-oauth2這個項目上點右鍵選“Export”,然後如圖:

wKiom1VoBwewgFGtAAGhE23KGhc978.jpg

下一步,

wKiom1VoBzCShNjoAAJL8LXvEqg382.jpg

哪個程序是入口,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問題。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章