java 微博sdk_Java基于新浪微博SDK实现发微博的功能
背景
最近用實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的發(fā)微博的功能。
新浪微博的SDK已經(jīng)經(jīng)歷了多次更新,而網(wǎng)上的資料、教程大多還是基于舊版本的,很多細(xì)節(jié)上有了一些變化。本文將基于最新的新浪微博SDK介紹發(fā)微博的過(guò)程。
簡(jiǎn)介
首先,需要在新浪微博開(kāi)放平臺(tái)創(chuàng)建自己的應(yīng)用,獲取App Key與App Secret兩個(gè)字符串。
然后,下載新浪微博SDK。在配置文件中填入上一步獲得點(diǎn)的AppKey與App Secret,以及回調(diào)地址。
運(yùn)行例子程序中的weibo4j.examples.oauth2里的Oauth4Code.java,將會(huì)引導(dǎo)用戶對(duì)你創(chuàng)建的應(yīng)用授權(quán)。
授權(quán)完成后,一個(gè)code將會(huì)被傳到回調(diào)地址。
將這個(gè)code輸入控制臺(tái),會(huì)得到一個(gè)access_token。
利用這個(gè)access_token就可以調(diào)用發(fā)微博API了。
詳解
創(chuàng)建應(yīng)用
進(jìn)入新浪微博開(kāi)放平臺(tái)
點(diǎn)擊上方的微連接-其他,開(kāi)始創(chuàng)建新應(yīng)用。
填入應(yīng)用名稱,選擇應(yīng)用類型。在以前,”站內(nèi)應(yīng)用”是一個(gè)很方便的類型。但是現(xiàn)在已經(jīng)沒(méi)了,我選擇的是”客戶端”-“桌面”-“windows”。
創(chuàng)建成功后,進(jìn)入應(yīng)用基本信息頁(yè)面,其中,App Key和App Secret已經(jīng)生成了。
然后要進(jìn)入 應(yīng)用信息-高級(jí)信息-Oauth2授權(quán)設(shè)置 設(shè)置回調(diào)地址。如下圖所示。
在這個(gè)簡(jiǎn)單的發(fā)微博功能中,我們不會(huì)真正用到回調(diào)地址。將回調(diào)地址設(shè)為百度是個(gè)不錯(cuò)的選擇。
新浪微博SDK
新浪微博SDK下載
本以為新浪微博SDK會(huì)是一個(gè)jar包,結(jié)果卻是一堆源碼與資源文件,以及許多例子程序。
下載后,編輯Config.properties配置文件。
client_ID :appkey
client_SERCRET :app secret
redirect_URI : 回調(diào)地址
這三個(gè)參數(shù)都必須跟上一步得到的保持一致。
運(yùn)行例子程序中的weibo4j.examples.oauth2里的Oauth4Code.java,將會(huì)打開(kāi)默認(rèn)瀏覽器,進(jìn)入應(yīng)用授權(quán)界面。
授權(quán)成功后,將會(huì)跳轉(zhuǎn)到回調(diào)地址(我們填入的是百度),
地址欄中顯示的是http://www.baidu.com/?code=******************
將**************復(fù)制下來(lái),填入控制臺(tái)。
輸入code。
如果輸入正確,access_token將被輸出。
access_token有多個(gè)鍵值對(duì),閱讀源碼可知道AccessToken.getAccessToken()方法可以取出其中的access_token字符串。這個(gè)字符串就是我們需要的“令牌”。
而發(fā)送微博的功能只需要兩行代碼即可實(shí)現(xiàn)
Timeline tm = new Timeline("前面得到的access_token");
tm.updateStatus("微博內(nèi)容");
demo
這里給出一個(gè)簡(jiǎn)單的demo,運(yùn)行后手動(dòng)輸入code即可自動(dòng)發(fā)送微博。
public static void main(String[] args){
//TODO Auto-generated method stub
try {
Oauth oauth = new Oauth();
BareBonesBrowserLaunch.openURL(oauth.authorize("code"));
System.out.println(oauth.authorize("code"));
System.out.print("Hit enter when it's done.[Enter]:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String code = br.readLine();
String access_token =oauth.getAccessTokenByCode(code).getAccessToken();
Timeline tm = new Timeline(access_token);
tm.updateStatus("測(cè)試:自動(dòng)發(fā)送微博。");
} catch (WeiboException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
總結(jié)
到這里,發(fā)送微博的功能已經(jīng)實(shí)現(xiàn)了。 但是其中有個(gè)問(wèn)題,code必須手動(dòng)從瀏覽器地址欄取出后輸入我們的應(yīng)用。而作為一個(gè)桌面應(yīng)用,這個(gè)過(guò)程沒(méi)什么簡(jiǎn)單的辦法去掉。如果是網(wǎng)頁(yè)應(yīng)用的話,倒是比較容易獲取。 有一個(gè)思路是通過(guò)代碼模擬瀏覽器行為,但這很困難,因?yàn)樾吕宋⒉┑卿涍^(guò)程中對(duì)賬號(hào)密碼進(jìn)行了比較復(fù)雜的加密,而加密算法藏得比較深難以找到。網(wǎng)上倒是有不少文章分析了這一過(guò)程,但新浪微博的加密算法也不是一成不變的,網(wǎng)上的方法基本上都已經(jīng)過(guò)時(shí)。
總結(jié)
以上是生活随笔為你收集整理的java 微博sdk_Java基于新浪微博SDK实现发微博的功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2019年已经过去1/4,当初的愿望都实
- 下一篇: Java 内部类简介,理解,特点,注意事