java 微博sdk_Java基于新浪微博SDK实现发微博的功能
背景
最近用實現了一個簡單的發微博的功能。
新浪微博的SDK已經經歷了多次更新,而網上的資料、教程大多還是基于舊版本的,很多細節上有了一些變化。本文將基于最新的新浪微博SDK介紹發微博的過程。
簡介
首先,需要在新浪微博開放平臺創建自己的應用,獲取App Key與App Secret兩個字符串。
然后,下載新浪微博SDK。在配置文件中填入上一步獲得點的AppKey與App Secret,以及回調地址。
運行例子程序中的weibo4j.examples.oauth2里的Oauth4Code.java,將會引導用戶對你創建的應用授權。
授權完成后,一個code將會被傳到回調地址。
將這個code輸入控制臺,會得到一個access_token。
利用這個access_token就可以調用發微博API了。
詳解
創建應用
進入新浪微博開放平臺
點擊上方的微連接-其他,開始創建新應用。
填入應用名稱,選擇應用類型。在以前,”站內應用”是一個很方便的類型。但是現在已經沒了,我選擇的是”客戶端”-“桌面”-“windows”。
創建成功后,進入應用基本信息頁面,其中,App Key和App Secret已經生成了。
然后要進入 應用信息-高級信息-Oauth2授權設置 設置回調地址。如下圖所示。
在這個簡單的發微博功能中,我們不會真正用到回調地址。將回調地址設為百度是個不錯的選擇。
新浪微博SDK
新浪微博SDK下載
本以為新浪微博SDK會是一個jar包,結果卻是一堆源碼與資源文件,以及許多例子程序。
下載后,編輯Config.properties配置文件。
client_ID :appkey
client_SERCRET :app secret
redirect_URI : 回調地址
這三個參數都必須跟上一步得到的保持一致。
運行例子程序中的weibo4j.examples.oauth2里的Oauth4Code.java,將會打開默認瀏覽器,進入應用授權界面。
授權成功后,將會跳轉到回調地址(我們填入的是百度),
地址欄中顯示的是http://www.baidu.com/?code=******************
將**************復制下來,填入控制臺。
輸入code。
如果輸入正確,access_token將被輸出。
access_token有多個鍵值對,閱讀源碼可知道AccessToken.getAccessToken()方法可以取出其中的access_token字符串。這個字符串就是我們需要的“令牌”。
而發送微博的功能只需要兩行代碼即可實現
Timeline tm = new Timeline("前面得到的access_token");
tm.updateStatus("微博內容");
demo
這里給出一個簡單的demo,運行后手動輸入code即可自動發送微博。
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("測試:自動發送微博。");
} catch (WeiboException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
總結
到這里,發送微博的功能已經實現了。 但是其中有個問題,code必須手動從瀏覽器地址欄取出后輸入我們的應用。而作為一個桌面應用,這個過程沒什么簡單的辦法去掉。如果是網頁應用的話,倒是比較容易獲取。 有一個思路是通過代碼模擬瀏覽器行為,但這很困難,因為新浪微博登錄過程中對賬號密碼進行了比較復雜的加密,而加密算法藏得比較深難以找到。網上倒是有不少文章分析了這一過程,但新浪微博的加密算法也不是一成不變的,網上的方法基本上都已經過時。
總結
以上是生活随笔為你收集整理的java 微博sdk_Java基于新浪微博SDK实现发微博的功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2019年已经过去1/4,当初的愿望都实
- 下一篇: 中断的概念及意义