java微博开发_【新手入门篇】新浪微博应用开发之Java入门篇
新浪微博應用開發之Java篇
2012年11月11日星期日
一、開發流程簡介:
2、? 在以下地址創建一個應用,假設創建一個桌面應用:
3、? 進入管理中心,查看并記住應用ID和密碼:
4、? 在“應用中心-高級信息”設置回調頁面(設置后一般需要半小時左右才能生效):
OK,準備工作完成!
二、不使用任何SDK實現Oauth授權并實現簡單的發布微博功能:
創建一個Java項目,編寫如下代碼,具體過程代碼中已寫的很清楚,這里不再做解釋:
注意先修改應用ID、應用密碼和回調頁面成你自己的!訪問授權頁面:
packagecom;importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.io.OutputStreamWriter;importjava.net.URL;importjava.net.URLConnection;importjava.security.cert.CertificateException;importjava.security.cert.X509Certificate;importjava.util.Scanner;importjavax.net.ssl.X509TrustManager;/***@author劉顯安
* 不使用任何SDK實現新浪微博Oauth授權并實現發微薄小Demo
* 日期:2012年11月11日*/
public classTest
{static String clientId="2355065950";//你的應用ID
static String clientSecret="72037e76bee00315691d9c30dd8a386a";//你的應用密碼
static String redirectUri="https://api.weibo.com/oauth2/default.html";//你在應用管理中心設置的回調頁面
public static void main(String[] args) throwsException
{
testHttps();//測試//第一步:訪問授權頁面獲取授權
System.out.println("請打開你的瀏覽器,訪問以下頁面,登錄你的微博賬號并授權:");
System.out.println("https://api.weibo.com/oauth2/authorize?client_id="+clientId+"&response_type=code&redirect_uri="+redirectUri+"&forcelogin=true");//第二步:獲取AccessToken
System.out.println("請將授權成功后的頁面地址欄中的參數code:");
String code=newScanner(System.in).next();
getAccessToken(code);//第三步:發布一條微博
System.out.println("請輸入上面返回的值中accessToken的值:");
String accessToken=newScanner(System.in).next();
updateStatus("發布微博測試!來自WeiboDemo!", accessToken);
}/*** 測試能否正常訪問HTTPS打頭的網站,*/
public static voidtestHttps()
{try{
trustAllHttpsCertificates();//設置信任所有的http證書
URL url=new URL("https://api.weibo.com/oauth2/default.html");
URLConnection con=url.openConnection();
con.getInputStream();
System.out.println("恭喜,訪問HTTPS打頭的網站正常!");
}catch(Exception e)
{
e.printStackTrace();
}
}/*** 以Post方式訪問一個URL
*@paramurl 要訪問的URL
*@paramparameters URL后面“?”后面跟著的參數*/
public static voidpostUrl(String url,String parameters)
{try{
trustAllHttpsCertificates();//設置信任所有的http證書
URLConnection conn = newURL(url).openConnection();
conn.setDoOutput(true);//這里是關鍵,表示我們要向鏈接里注入的參數
OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());//獲得連接輸出流
out.write(parameters);
out.flush();
out.close();//到這里已經完成了,開始打印返回的HTML代碼
BufferedReader reader = new BufferedReader(newInputStreamReader(conn.getInputStream()));
String line= null;while ((line = reader.readLine()) != null)
{
System.out.println(line);
}
}catch(Exception e)
{
e.printStackTrace();
}
}/*** 獲取AccessToken
*@paramcode 在授權頁面返回的Code*/
public static voidgetAccessToken(String code)
{
String url="https://api.weibo.com/oauth2/access_token";
String parameters="client_id=" +clientId+"&client_secret=" +clientSecret+
"&grant_type=authorization_code" +"&redirect_uri=" +redirectUri+"&code="+code;
postUrl(url, parameters);
}/*** 利用剛獲取的AccessToken發布一條微博
*@paramtext 要發布的微博內容
*@paramaccessToken 剛獲取的AccessToken*/
public static voidupdateStatus(String text,String accessToken)
{
String url="https://api.weibo.com/2/statuses/update.json";
String parameters="status="+text+"&access_token="+accessToken;
postUrl(url, parameters);
System.out.println("發布微博成功!");
}/*** 設置信任所有的http證書(正常情況下訪問https打頭的網站會出現證書不信任相關錯誤,所以必須在訪問前調用此方法)
*@throwsException*/
private static void trustAllHttpsCertificates() throwsException
{
javax.net.ssl.TrustManager[] trustAllCerts= new javax.net.ssl.TrustManager[1];
trustAllCerts[0] = newX509TrustManager()
{
@OverridepublicX509Certificate[] getAcceptedIssuers()
{return null;
}
@Overridepublic voidcheckServerTrusted(X509Certificate[] arg0, String arg1)throwsCertificateException
{}
@Overridepublic voidcheckClientTrusted(X509Certificate[] arg0, String arg1)throwsCertificateException
{}
};
javax.net.ssl.SSLContext sc= javax.net.ssl.SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, null);
javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
}
}
訪問授權頁面:
授權成功:
發布微博成功:
控制臺輸出結果:
三、使用weibo4j-oauth2這個SDK做一個簡單的搶沙發工具:
1、SDK下載:
下載下來是個包含測試代碼的整個SDK源代碼,可以打包成jar文件方便調用,我這里打包成名為weibo4j-oauth2.jar的文件,注意先修改config.properties文件中的應用id、應用密碼、回調頁面。
2、在項目中導入以下6個包:
3、使用WindowsBuild新建一個Jframe窗體,大體布局如下:
三個按鈕的事件分別如下:
public Date minTime;//最近一條微博的更新時間
/*** 打開授權頁面*/
public voidopenUrl()
{try{
BareBonesBrowserLaunch.openURL(new Oauth().authorize("code"));
}catch(WeiboException e)
{
e.printStackTrace();
}
}/*** 獲取當前登錄用戶的好友列表*/
public voidgetFriends()
{try{//獲取好友列表
accessToken=newOauth().getAccessTokenByCode(textFieldCode.getText());
Friendships friendships=newFriendships();
friendships.setToken(accessToken.getAccessToken());for(User user:friendships.getFriendsByID(accessToken.getUid()).getUsers())
{
comboBox.addItem(user.getName());
}
}catch(WeiboException e)
{
e.printStackTrace();
}
}/*** 開始監控關注用戶的微博
*@throwsWeiboException*/
public voidstart()
{try{
System.out.println("開始監控");
Timeline timeline=newTimeline();
timeline.setToken(accessToken.getAccessToken());
minTime= timeline.getUserTimelineByName(comboBox.getSelectedItem().toString()).getStatuses().get(0).getCreatedAt();
Timer timer=newTimer();
timer.schedule(newTimerTask()
{
@Overridepublic voidrun()
{try{
Timeline timeline=newTimeline();
timeline.setToken(accessToken.getAccessToken());
Status status=timeline.getUserTimelineByName(comboBox.getSelectedItem().toString()).getStatuses().get(0);if(status.getCreatedAt().after(minTime))//如果最新微博的發表時間在之前相對時間的后面
{
minTime=status.getCreatedAt();
System.out.println("你關注的用戶更新微博啦");
Comments comments=newComments();
comments.setToken(accessToken.getAccessToken());
comments.createComment("哈哈,我來評論啦!", status.getId());
JOptionPane.showMessageDialog(null, "恭喜,搶沙發成功!");
}
}catch(WeiboException e)
{
e.printStackTrace();
}
}
},0, 5000);//設置5秒鐘刷新一次
}catch(WeiboException e)
{
e.printStackTrace();
}
}
項目源代碼下載地址:
整理后的SDK下載地址:
有問題可以聯系:
總結
以上是生活随笔為你收集整理的java微博开发_【新手入门篇】新浪微博应用开发之Java入门篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java导出富文本到word_富文本编辑
- 下一篇: c语言 1 %3c%3c -253,结构