首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 整合新浪微博 API 開發完整指南:從註冊到發布微博

     編輯:Java 相關知識

開發前置準備

  1. 註冊開發者帳號:新浪微博開放平台
  2. 創建應用:管理中心 → 創建網站接入應用,填寫資訊通過審核
  3. 獲取關鍵參數:應用詳情頁獲取 App Key、App Secret、設定 OAuth2.0 授權回調頁(開發期可填 https://www.baidu.com)
  4. 下載 Java SDK:文檔 → SDK → Java SDK,解壓含 src(核心庫)與 example(範例)

SDK 配置

修改 src/config.properties:

client_ID=您的App Key
client_SERCRET=您的App Secret
redirect_URI=您的授權回調頁URL

快速獲取 Access Token(開發測試用)

文檔 → API → API測試工具 → 選擇應用 → 獲取 Access Token,直接複製生成的 Token 用於測試,跳過 OAuth 流程。

無 SDK 純 Java 實作 OAuth 2.0 與發布微博

public class WeiboDemo {
    static final String CLIENT_ID = "您的App Key";
    static final String CLIENT_SECRET = "您的App Secret";
    static final String REDIRECT_URI = "您的回調頁";

    public static void main(String[] args) throws Exception {
        // 1. 導向授權頁
        System.out.println("請開啟瀏覽器訪問:");
        System.out.println("https://api.weibo.com/oauth2/authorize?client_id=" + CLIENT_ID +
                "&response_type=code&redirect_uri=" + REDIRECT_URI + "&forcelogin=true");

        // 2. 手動輸入授權碼
        Scanner sc = new Scanner(System.in);
        System.out.print("請輸入授權後 URL 中的 code 參數:");
        String code = sc.nextLine();

        // 3. 換取 Access Token
        String tokenUrl = "https://api.weibo.com/oauth2/access_token";
        String params = "client_id=" + CLIENT_ID + "&client_secret=" + CLIENT_SECRET +
                "&grant_type=authorization_code&redirect_uri=" + REDIRECT_URI + "&code=" + code;
        String tokenResp = postHttps(tokenUrl, params);
        System.out.println("Token 回應:" + tokenResp);
        // 解析 JSON 取得 access_token(建議用 Jackson/Gson)

        // 4. 發布微博
        System.out.print("請輸入 access_token:");
        String accessToken = sc.nextLine();
        String postUrl = "https://api.weibo.com/2/statuses/update.json";
        String postParams = "status=測試微博來自Java Demo&access_token=" + accessToken;
        String postResp = postHttps(postUrl, postParams);
        System.out.println("發布結果:" + postResp);
    }

    static String postHttps(String url, String params) throws Exception {
        trustAllCerts(); // 忽略憑證驗證(僅測試用)
        HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
        conn.setRequestMethod("POST");
        conn.setDoOutput(true);
        try (OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream())) {
            wr.write(params);
        }
        try (BufferedReader rd = new BufferedReader(
                new InputStreamReader(conn.getInputStream()))) {
            StringBuilder sb = new StringBuilder();
            String line;
            while ((line = rd.readLine()) != null) sb.append(line);
            return sb.toString();
        }
    }

    static void trustAllCerts() throws Exception {
        TrustManager[] trustAll = new TrustManager[]{
            new X509TrustManager() {
                public X509Certificate[] getAcceptedIssuers() { return null; }
                public void checkClientTrusted(X509Certificate[] c, String a) {}
                public void checkServerTrusted(X509Certificate[] c, String a) {}
            }
        };
        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAll, new SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
    }
}

關鍵 API 端點速查

功能HTTP 方法端點關鍵參數
授權頁GET/oauth2/authorizeclient_id, response_type=code, redirect_uri
換 TokenPOST/oauth2/access_tokenclient_id, client_secret, grant_type, code, redirect_uri
發微博POST/2/statuses/update.jsonstatus, access_token
用戶時間線GET/2/statuses/user_timeline.jsonaccess_token, uid/screen_name

生產環境注意事項

  1. Token 管理:Access Token 有效期 30 天,需實作 Refresh Token 機制(/oauth2/access_token 配合 grant_type=refresh_token)
  2. HTTPS 憑證:正式環境不可使用 trustAllCerts(),需正確配置信任存儲
  3. 錯誤處理:解析回應 JSON 中的 error_code、error 欄位,對應錯誤碼表處理
  4. 頻率限制:遵守 API 呼叫頻率限制,實作指數退避重試
  5. 安全性:App Secret 嚴禁前端暴露,Token 應加密儲存

SDK 與手動實作選擇建議

  • SDK:封裝完整、支援同步/非同步、自動處理 Token 刷新,適合正式專案
  • 手動實作:理解 OAuth 流程、快速原型驗證、特殊定製需求時適用
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved