欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java使用新浪微博API開(kāi)發(fā)微博應(yīng)用的基本方法

 更新時(shí)間:2015年11月26日 17:30:09   作者:六仙庵  
這篇文章主要介紹了Java使用新浪微博API開(kāi)發(fā)微博應(yīng)用的基本方法,文中還給出了一個(gè)不使用任何SDK實(shí)現(xiàn)Oauth授權(quán)并實(shí)現(xiàn)簡(jiǎn)單的發(fā)布微博功能的實(shí)現(xiàn)方法,需要的朋友可以參考下

新浪微博API現(xiàn)在運(yùn)用比較廣泛,做一個(gè)完整的開(kāi)發(fā)流程Demo
1、第一步注冊(cè),就不多說(shuō)了,注冊(cè)帳號(hào)以及成為開(kāi)發(fā)者帳號(hào),這步操作不會(huì)的話請(qǐng)你馬上砸掉電腦拔掉網(wǎng)線回家種田。
2、第二步創(chuàng)建應(yīng)用,開(kāi)發(fā)者帳號(hào)創(chuàng)建好了,打開(kāi)新浪微博開(kāi)發(fā)平臺(tái): http://open.weibo.com
   上面菜單欄點(diǎn)擊最后一個(gè) 管理中心

20151126172241979.jpg (600×312)

如果是web的應(yīng)用的話選擇創(chuàng)建網(wǎng)站接入的應(yīng)用,然后根據(jù)新浪微博的要求balabalabala自己去搞定
  應(yīng)用創(chuàng)建完畢。點(diǎn)擊應(yīng)用跳轉(zhuǎn)頁(yè)面,點(diǎn)擊查看應(yīng)用參數(shù),可以看到應(yīng)用的相關(guān)參數(shù),這些參數(shù)將會(huì)在第四步用到。
3、第三步下載sdk,回到頂部的菜單欄,點(diǎn)擊 文檔 ,再點(diǎn)擊左邊菜單欄sdk,選擇java sdk,然后balabala下載,這步操作有問(wèn)題也請(qǐng)回家種田。

20151126172311674.jpg (600×420)

所謂的sdk并非是sdk(個(gè)人覺(jué)得名稱有點(diǎn)誤導(dǎo)),而是一個(gè)可運(yùn)行的工程,下載完畢之后解壓 ,并導(dǎo)入到eclipse,可以看到兩個(gè)目錄 src和example
src是新浪微博的部分
example是實(shí)例,接口的demo
4、第四步配置參數(shù),找到src目錄下的config.properties
前三個(gè)參數(shù)需要自己配置 為第二步里說(shuō)過(guò)的應(yīng)用參數(shù)里的參數(shù)
后面的都是默認(rèn)的不需要改
前三個(gè)參數(shù)配置如下
client_ID為App Key
client_SERCRET為App Secret
redirect_URI為 OAuth2.0授權(quán)的回調(diào)URL 應(yīng)用信息>高級(jí)信息>OAuth2.0 授權(quán)設(shè)置下面的授權(quán)回調(diào)頁(yè)  這是一個(gè)你自己填寫(xiě)的URL 指向的是你自己服務(wù)器 當(dāng)然在開(kāi)發(fā)階段我們可以使用任何URL 只要能夠讓我們了解OAuth授權(quán)的流程就好了 這里我們就輸入一個(gè)http://www.baidu.com  取消授權(quán)回調(diào)頁(yè)也是如此 注意這里的URL的字符串必須是一致
5、第五步獲取AccessToken,正常情況下AccessToken的獲取是需要通過(guò)OAuth2.0認(rèn)證的,但是為了更簡(jiǎn)單我先說(shuō)一種簡(jiǎn)單的方法。后面再講OAuth2.0
還是選擇最上面的菜單欄 文檔>API>API測(cè)試工具
選擇創(chuàng)建的應(yīng)用 點(diǎn)擊獲取AccessToken 下面的文本框里就是我們要的AccessToken

20151126172332485.jpg (346×373)

6、第六步先做一個(gè)接口實(shí)例
去微博API里隨便找一個(gè)已有權(quán)限的接口,
我隨便找了一個(gè) 獲取用戶發(fā)布的微博  statuses/user_timeline 做測(cè)試用的

20151126172350677.jpg (600×365)

點(diǎn)擊這個(gè)接口查看這個(gè)接口詳情,可以查看到接口的每個(gè)傳入?yún)?shù)以及返回參數(shù) 這個(gè)無(wú)需多說(shuō)。

不使用任何SDK實(shí)現(xiàn)Oauth授權(quán)并實(shí)現(xiàn)簡(jiǎn)單的發(fā)布微博功能:
創(chuàng)建一個(gè)Java項(xiàng)目,編寫(xiě)如下代碼,具體過(guò)程代碼中已寫(xiě)的很清楚,這里不再做解釋:

注意先修改應(yīng)用ID、應(yīng)用密碼和回調(diào)頁(yè)面成你自己的!訪問(wèn)授權(quán)頁(yè)面:

package com;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Scanner;

import javax.net.ssl.X509TrustManager;

/**
 * @author 劉顯安
 * 不使用任何SDK實(shí)現(xiàn)新浪微博Oauth授權(quán)并實(shí)現(xiàn)發(fā)微薄小Demo
 * 日期:2012年11月11日
 */
public class Test
{
  static String clientId="2355065950";//你的應(yīng)用ID
  static String clientSecret="72037e76bee00315691d9c30dd8a386a";//你的應(yīng)用密碼
  static String redirectUri="https://api.weibo.com/oauth2/default.html";//你在應(yīng)用管理中心設(shè)置的回調(diào)頁(yè)面
  
  public static void main(String[] args) throws Exception
  {
    testHttps();//測(cè)試
    //第一步:訪問(wèn)授權(quán)頁(yè)面獲取授權(quán)
    System.out.println("請(qǐng)打開(kāi)你的瀏覽器,訪問(wèn)以下頁(yè)面,登錄你的微博賬號(hào)并授權(quán):");
    System.out.println("https://api.weibo.com/oauth2/authorize?client_id="+clientId+"&response_type=code&redirect_uri="+redirectUri+"&forcelogin=true");
    //第二步:獲取AccessToken
    System.out.println("請(qǐng)將授權(quán)成功后的頁(yè)面地址欄中的參數(shù)code:");
    String code=new Scanner(System.in).next();
    getAccessToken(code);
    //第三步:發(fā)布一條微博
    System.out.println("請(qǐng)輸入上面返回的值中accessToken的值:");
    String accessToken=new Scanner(System.in).next();
    updateStatus("發(fā)布微博測(cè)試!來(lái)自WeiboDemo!", accessToken);
  }
  /**
   * 測(cè)試能否正常訪問(wèn)HTTPS打頭的網(wǎng)站,
   */
  public static void testHttps()
  {
    try
    {
      trustAllHttpsCertificates();//設(shè)置信任所有的http證書(shū)
      URL url=new URL("https://api.weibo.com/oauth2/default.html");
      URLConnection con=url.openConnection();
      con.getInputStream();
      System.out.println("恭喜,訪問(wèn)HTTPS打頭的網(wǎng)站正常!");
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
  }
  /**
   * 以Post方式訪問(wèn)一個(gè)URL
   * @param url 要訪問(wèn)的URL
   * @param parameters URL后面“?”后面跟著的參數(shù)
   */
  public static void postUrl(String url,String parameters)
  {
    try
    {
      trustAllHttpsCertificates();//設(shè)置信任所有的http證書(shū)
      URLConnection conn = new URL(url).openConnection();
      conn.setDoOutput(true);// 這里是關(guān)鍵,表示我們要向鏈接里注入的參數(shù)
      OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());// 獲得連接輸出流
      out.write(parameters);
      out.flush();
      out.close();
      // 到這里已經(jīng)完成了,開(kāi)始打印返回的HTML代碼
      BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
      String line = null;
      while ((line = reader.readLine()) != null)
      {
        System.out.println(line);
      }
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
  }
  /**
   * 獲取AccessToken
   * @param code 在授權(quán)頁(yè)面返回的Code
   */
  public static void getAccessToken(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發(fā)布一條微博
   * @param text 要發(fā)布的微博內(nèi)容
   * @param accessToken 剛獲取的AccessToken
   */
  public static void updateStatus(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("發(fā)布微博成功!");
  }
  /**
   * 設(shè)置信任所有的http證書(shū)(正常情況下訪問(wèn)https打頭的網(wǎng)站會(huì)出現(xiàn)證書(shū)不信任相關(guān)錯(cuò)誤,所以必須在訪問(wèn)前調(diào)用此方法)
   * @throws Exception
   */
  private static void trustAllHttpsCertificates() throws Exception
  {
    javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
    trustAllCerts[0] = new X509TrustManager()
    {
      @Override
      public X509Certificate[] getAcceptedIssuers()
      {
        return null;
      }
      @Override
      public void checkServerTrusted(X509Certificate[] arg0, String arg1)
          throws CertificateException
      {}
      @Override
      public void checkClientTrusted(X509Certificate[] arg0, String arg1)
          throws CertificateException
      {}
    };
    javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("SSL");
    sc.init(null, trustAllCerts, null);
    javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
  }
}

訪問(wèn)授權(quán)頁(yè)面:

20151126172812746.png (613×340)

授權(quán)成功:

20151126172829414.png (690×349)

發(fā)布微博成功:

20151126172843215.png (580×107)

控制臺(tái)輸出結(jié)果:

20151126172901747.png (996×256)

相關(guān)文章

  • Java實(shí)現(xiàn)調(diào)用第三方相關(guān)接口

    Java實(shí)現(xiàn)調(diào)用第三方相關(guān)接口

    最近在做一個(gè)項(xiàng)目,需要調(diào)用第三方接口,本文主要介紹了Java實(shí)現(xiàn)調(diào)用第三方相關(guān)接口,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • springboot項(xiàng)目監(jiān)控開(kāi)發(fā)小用例(實(shí)例分析)

    springboot項(xiàng)目監(jiān)控開(kāi)發(fā)小用例(實(shí)例分析)

    這篇文章主要介紹了springboot項(xiàng)目監(jiān)控開(kāi)發(fā)小用例,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • JSON序列化導(dǎo)致Long類型被搞成Integer的坑及解決

    JSON序列化導(dǎo)致Long類型被搞成Integer的坑及解決

    這篇文章主要介紹了JSON序列化導(dǎo)致Long類型被搞成Integer的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring中AOP的切點(diǎn)、通知、切點(diǎn)表達(dá)式及知識(shí)要點(diǎn)整理

    Spring中AOP的切點(diǎn)、通知、切點(diǎn)表達(dá)式及知識(shí)要點(diǎn)整理

    這篇文章主要介紹了Spring中AOP的切點(diǎn)、通知、切點(diǎn)表達(dá)式及知識(shí)要點(diǎn)整理,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • SpringBoot實(shí)現(xiàn)優(yōu)雅停機(jī)的正確方法

    SpringBoot實(shí)現(xiàn)優(yōu)雅停機(jī)的正確方法

    什么叫優(yōu)雅停機(jī)?就是向應(yīng)用進(jìn)程發(fā)出停止指令之后,能保證正在執(zhí)行的業(yè)務(wù)操作不受影響,直到操作運(yùn)行完畢之后再停止服務(wù)。本文就來(lái)和大家聊聊SpringBoot實(shí)現(xiàn)優(yōu)雅停機(jī)的正確姿勢(shì),希望對(duì)大家有所幫助
    2023-01-01
  • SpringBoot2實(shí)現(xiàn)MessageQueue消息隊(duì)列

    SpringBoot2實(shí)現(xiàn)MessageQueue消息隊(duì)列

    本文主要介紹了 SpringBoot2實(shí)現(xiàn)MessageQueue消息隊(duì)列,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 九個(gè)動(dòng)畫(huà)組圖輪播總結(jié)全棧數(shù)據(jù)結(jié)構(gòu)數(shù)組鏈表

    九個(gè)動(dòng)畫(huà)組圖輪播總結(jié)全棧數(shù)據(jù)結(jié)構(gòu)數(shù)組鏈表

    數(shù)據(jù)結(jié)構(gòu)和算法是密不可分的,兩者往往是相輔相成的存在,所以在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)過(guò)程中,不免會(huì)遇到各種算法,數(shù)據(jù)結(jié)構(gòu)常用操作一般為:增刪改查?;旧纤械臄?shù)據(jù)結(jié)構(gòu)都是圍繞這幾個(gè)操作進(jìn)行展開(kāi),本文用九張動(dòng)圖來(lái)闡述先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu)
    2021-08-08
  • SpringAop中的Advice通知實(shí)例

    SpringAop中的Advice通知實(shí)例

    這篇文章主要介紹了SpringAop中的Advice通知詳解,Spring的AOP功能中一個(gè)關(guān)鍵概念是通知Advice與切點(diǎn)Pointcut表達(dá)式相關(guān)聯(lián)在特定節(jié)點(diǎn)織入一些邏輯,Spring提供了五種類型的通知,需要的朋友可以參考下
    2023-09-09
  • JAVA匿名內(nèi)部類(Anonymous Classes)的具體使用

    JAVA匿名內(nèi)部類(Anonymous Classes)的具體使用

    本文主要介紹了JAVA匿名內(nèi)部類,匿名內(nèi)部類在我們JAVA程序員的日常工作中經(jīng)常要用到,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 教你如何用Java簡(jiǎn)單爬取WebMagic

    教你如何用Java簡(jiǎn)單爬取WebMagic

    今天給大家?guī)?lái)的是關(guān)于Java爬蟲(chóng)的相關(guān)知識(shí),文章圍繞著Java如何爬取WebMagic展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06

最新評(píng)論