微博开放平台api使用[通俗易懂](微博搜索的微博)
前言:微博開放平臺提供了微博數(shù)據(jù)的api接口,不僅可以直接通過api調(diào)用微博服務(wù)發(fā)布微博查詢微博,更重要的是,可以在自己的網(wǎng)站上獲得新浪微博api的授權(quán),調(diào)用微博的某些內(nèi)容,就好像我們再網(wǎng)站中看到好文章要分享到微博或者其他社交網(wǎng)站中一樣,非常方便。
 下面就來探秘一番。 1.注冊開發(fā)者并獲取app key 和 app secret  百度很容易找到微博開放平臺的入口,登錄自己的微博賬號,點(diǎn)擊賬號頭像,會提示編輯開發(fā)者信息。 
   可以看到如下的頁面,只需要按照提示填寫,其中緊急聯(lián)系人可以填自己,網(wǎng)站無所謂,填百度也行。 
  提交之后,你需要在我的應(yīng)用下實(shí)名認(rèn)證,上傳圖片時(shí)請耐心等待,有點(diǎn)慢而且沒有上傳進(jìn)度。上傳之后點(diǎn)擊返回,可以跳轉(zhuǎn)到新頁面:
 
 按照需要選擇,然后創(chuàng)建自己的應(yīng)用。至于這里面各種應(yīng)用名詞是什么意思我也不是很清楚,用著用著就熟了。我選擇的是其他應(yīng)用
 
 
  創(chuàng)建之后,會收到郵件,含有app key 和 app secret 。這是獲取授權(quán)的關(guān)鍵。 2.獲取token  首頁
 http://open.weibo.com/點(diǎn)擊api接口,會跳轉(zhuǎn)到api接口說明文檔頁面,你會發(fā)現(xiàn)api有很多功能,包括創(chuàng)建微博,刪除微博,關(guān)注/取消關(guān)注等非常多的接口,但是每個(gè)接口都需要token才能訪問。token從何而來? 首先你需要獲取一個(gè)code碼,其次你需要有個(gè)調(diào)用接口的網(wǎng)址(因?yàn)槲疑暾埖氖蔷W(wǎng)頁應(yīng)用)。 設(shè)置關(guān)聯(lián)的網(wǎng)址:  點(diǎn)擊你的應(yīng)用名,然后在左邊的菜單中找到高級信息,然后就可以編輯了。 
 
點(diǎn)擊api接口下
,進(jìn)入授權(quán)接口查看用法
 
按照實(shí)例,你需要發(fā)一個(gè)get請求包含client_id和redirect_uri。可以直接拼接。
https://api.weibo.com/oauth2/authorize?client_id=123050457758183&redirect_uri=http://www.example.com/response&response_type=code
 其中,client_id是你申請的app key,redirect_uri是自己要回調(diào)接口的地址,api會原樣返回。可以直接在瀏覽器輸入url,如下圖所示:  這個(gè)頁面是否有些熟悉呢?授權(quán)之后,網(wǎng)頁會跳回redirect_uri頁面,并且在url后面拼上code。于是code就有了 接下來獲取授權(quán)token,授權(quán)接口第二個(gè):
 
 
 http://open.weibo.com/wiki/OAuth2/access_token 頁面上有詳細(xì)的用法,發(fā)送http post請求,我用java的http-client4.5來做的,事實(shí)上其他方式也行。
 
 代碼寫的比較爛,但是多少是可用的。5個(gè)必備參數(shù)值。我們已經(jīng)獲取了最后兩個(gè),前面兩個(gè)在郵件中。代碼就不貼出來了。看管自己敲一敲有利于熟悉用法,以后少不了發(fā)各種請求。 至此,我們成功授權(quán),返回值里有需要的token值,如果返回error,請查看錯(cuò)誤提示,或者百度錯(cuò)誤信息。 此后只需要帶著token,就可以請求到各種接口,雖然有次數(shù)限制,不過如果正常使用應(yīng)該足夠了。  后記: 1.本來我是想做一些類似于爬蟲的功能,想在微博開放接口中,拿點(diǎn)數(shù)據(jù),不過縱覽api,多數(shù)是基于網(wǎng)頁應(yīng)用的微博分享的功能,  比如獲取自己的微博,獲取粉絲,發(fā)微博,關(guān)注等,不是自己需要的。 
  2.前面提了,微博開放api主要是用于第三方網(wǎng)站或者app接入微博,用微博登陸或者通過api做微博分享,所以有這方面需求的完全可以深入研究一下api接口。 3.api接口中,get請求都可以直接拼接字符串獲取,但是對于剛剛請求授權(quán)的get請求來說,它是需要用戶的賬號同意授權(quán)給應(yīng)用,所以必須要登錄用戶賬號,如果瀏覽器保有微博登陸后的cookie,那么瀏覽器能自動(dòng)登錄從而拿到目標(biāo)code,如果沒有就會提示登錄  
  
因而這個(gè)請求適合在瀏覽器上做,因?yàn)橛么a發(fā)請求還要模擬登錄,或者使用登錄后的cookie,非常麻煩。不過api中其他get請求不會有這個(gè)問題,直接帶token即可。模擬登錄可以使用selenium的webdriver 拿到 cookie,其他模擬登錄的方式普遍非常麻煩。
當(dāng)然,如果你內(nèi)嵌到網(wǎng)站上,那登錄就是用戶的事了。
4.以發(fā)送微博 為例:
@Test
    public void test2() throws IOException {
        CloseableHttpClient client = HttpClients.createDefault();
        CloseableHttpResponse response = null;
        RequestConfig config =
                RequestConfig.custom().setConnectTimeout(10000)
                        .setSocketTimeout(10000).build();
        HttpPost post = new HttpPost("https://api.weibo.com/2/statuses/update.json");
        post.setConfig(config);
        List<NameValuePair> pairs = new ArrayList<>();
        BasicNameValuePair p1 = new BasicNameValuePair("access_token","");
        String content = "本條微博通過微博開放接口發(fā)送";
        BasicNameValuePair p2 = new BasicNameValuePair("status",
                content);
        BasicNameValuePair p3 = new BasicNameValuePair("visible","0");
        pairs.add(p1);
        pairs.add(p2);
        pairs.add(p3);
        post.setEntity(new UrlEncodedFormEntity(pairs,"utf-8"));
        response = client.execute(post);
        HttpEntity entities = response.getEntity();
        System.out.println(EntityUtils.toString(entities,"UTF-8"));
    }
5.如果將開放api嵌入自己的網(wǎng)站中,大概做法是:在分享微博按鈕(第三方登陸按鈕)上,發(fā)送微博授權(quán)認(rèn)證,用戶在網(wǎng)頁上點(diǎn)擊授權(quán)后,后臺就獲得了code,以及能根據(jù)code獲取token。此后如果需要提取微博的用戶名,也就可以直接在后臺發(fā)請求。如果是分享到微博,也可以通過api來做到。 如果以后實(shí)踐中用到了這些功能,再做記錄,本文到此為止。 來自為知筆記(Wiz)
總結(jié)
以上是生活随笔為你收集整理的微博开放平台api使用[通俗易懂](微博搜索的微博)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 解决 Angular 官网下载的库 Sc
- 下一篇: 如何运行 Angular library
