關於微博開放平台Oauth2.0接入網站應用程式

來源:互聯網
上載者:User

標籤:android   style   blog   http   color   java   使用   os   

關於什麼是微博開放平台及微博開放平台能做什麼,咱就不做搜尋引擎的搬運工了

這裡直接給個連結介紹:微博開放平台

本文只是拋磚引玉,講講微博開放平台的基本用法,適合沒接觸過開放平台的朋友入門學習,老鳥就略過啦~

舉例(新浪)微博開放平台:http://open.weibo.com/ (這裡是官網)

 

先來看看關於微博開放平的台網站接入:

什麼是網站接入?

舉幾個例子,比如我們經常會看到各大網站可以直接使用QQ,微博,等帳號直接登入、各種文章、遊戲、頁面的一鍵分享、同步到QQ空間、微博等社交工具的即時動態等,這些都是開放平台網站接入的功能。

 

好了,話不多說了,直接進入主題

1、首先得先註冊個新浪微博的帳號,然後登陸開放平台

http://open.weibo.com/

然後在 管理中心->我的網站->添加新網站  填寫下關於自己網站的一些基本資料,然後複製下面的<meta>標籤裡的內容到自己的網站首頁就可以完成認證了。

然後記錄下自己的WB_AKEY和WB_SKEY(這個很重要),涉及到安全,我這裡就不了。

在我的網站裡就可以看到我們剛填寫的網站應用程式了

2、接著我們就可以在官網上下載相關的SDK開發套件了,這裡包括 Java , PHP, Flash, iOS, WP7, Android及 Python等語言。

下載連結:http://open.weibo.com/wiki/SDK

我個人用的是PHP,就說這個啦,因為SDK放在Google上,可能訪問有點慢。

 

http://code.google.com/p/libweibo/downloads/list

這裡要下載紅框裡的任一一個壓縮包,包含新版介面及OAuth2.0。這是壓縮包的內容:

分別介紹下各檔案:   

callback.php       回調,簡單說就是認證,擷取access_token

config.php            參數設定檔,包含APP key、APP secret和回調頁面地址的參數

index.php           首頁

saetv2.ex.class.php  新浪微博的操作類和認證類,就是SDK,裡面有許多注釋可以當成API來使用

weibolist.php      我們要實現的功能都在這一個php頁面中

 

3、具體代碼實現

先修改config.php裡面的配置資訊,填入我們剛記錄的WB_AKEY和WB_SKEY,這裡是要特別注意的是WB_CALLBACK_URL回調頁面地址的填寫,HTTP不能省略,需填寫完整的URL

<?phpheader(‘Content-Type: text/html; charset=UTF-8‘);define( "WB_AKEY" , ‘xxxxxxxxxx‘ );define( "WB_SKEY" , ‘xxxxxxxxxxxxxxxxxxxxxxxxx‘ );define( "WB_CALLBACK_URL" , ‘http://xxxxxxxxxxxx/callback.php‘ );

然後來到index.php(這裡要吐槽下新浪寫這個Demo的工作人員,現在PHP新版已經不支援<?=?>這種寫法的輸入格式了)

舉個例子:

<a href="<?=$code_url?>"><img src="weibo_login.png" title="點擊進入授權頁面" alt="點擊進入授權頁面" border="0" />

大家對應的修改下原代碼,改成echo輸出就好了。

在微博開放平台沒改版之前,記得裡面的Demo還有個$_SERVER[‘SCRIPT_URI‘]這也是不能用的,要對應修改。

<a href="<?php echo $code_url?>"><img src="weibo_login.png" title="點擊進入授權頁面" alt="點擊進入授權頁面" border="0" /></a>

然後就可以把檔案上傳到自己的公網伺服器了,本來是可以在本地做測試的,開放平台改版後,為控制環境,要求嚴格了些。

 

開啟我們的首頁index.php,點擊用微博帳號登陸,登陸成功會出現如下文字。

授權完成,進入你的微博列表頁面

 

 

點擊進入weibolist.php頁面,我們就可以看到對應微博帳號所看到的對應微博資訊了。

  

分析下weibolist.php的代碼:

 1 <?php 2 session_start(); 3  4 include_once( ‘config.php‘ ); 5 include_once( ‘saetv2.ex.class.php‘ ); 6  7 $c = new SaeTClientV2( WB_AKEY , WB_SKEY , $_SESSION[‘token‘][‘access_token‘] ); 8 $ms  = $c->home_timeline(); // done 9 $uid_get = $c->get_uid();10 $uid = $uid_get[‘uid‘];11 $user_message = $c->show_user_by_id( $uid);//根據ID擷取使用者等基本資料12 13 ?>

 

其實一目瞭然了,引入設定檔,類庫,執行個體化出對象,傳參,調用方法,傳回值。

比如:

$c = new SaeTClientV2( WB_AKEY , WB_SKEY , $_SESSION[‘token‘][‘access_token‘] );

$ms  = $c->home_timeline(); 

開啟類庫檔案尋找home_timeline方法,擷取當前登入使用者及其所關注使用者的最新微博訊息,API已經寫的很清楚了,大家有時間多去可以去讀讀源碼。

 1 /** 2      * 擷取當前登入使用者及其所關注使用者的最新微博訊息。 3      * 4      * 擷取當前登入使用者及其所關注使用者的最新微博訊息。和使用者登入 http://weibo.com 後在“我的首頁”中看到的內容相同。同friends_timeline() 5      * <br />對應API:{@link http://open.weibo.com/wiki/2/statuses/home_timeline statuses/home_timeline} 6      *  7      * @access public 8      * @param int $page 指定返回結果的頁碼。根據當前登入使用者所關注的使用者數及這些被關注使用者發表的微博數,翻頁功能最多能查看的總記錄數會有所不同,通常最多能查看1000條左右。預設值1。可選。 9      * @param int $count 每次返回的記錄數。預設值50,最大值200。可選。10      * @param int $since_id 若指定此參數,則只返回ID比since_id大的微博訊息(即比since_id發表時間晚的微博訊息)。可選。11      * @param int $max_id 若指定此參數,則返回ID小於或等於max_id的微博訊息。可選。12      * @param int $base_app 是否只擷取當前應用的資料。0為否(所有資料),1為是(僅當前應用),預設為0。13      * @param int $feature 過濾類型ID,0:全部、1:原創、2:圖片、3:視頻、4:音樂,預設為0。14      * @return array15      */16     function home_timeline( $page = 1, $count = 50, $since_id = 0, $max_id = 0, $base_app = 0, $feature = 0 )17     {18         $params = array();19         if ($since_id) {20             $this->id_format($since_id);21             $params[‘since_id‘] = $since_id;22         }23         if ($max_id) {24             $this->id_format($max_id);25             $params[‘max_id‘] = $max_id;26         }27         $params[‘count‘] = intval($count);28         $params[‘page‘] = intval($page);29         $params[‘base_app‘] = intval($base_app);30         $params[‘feature‘] = intval($feature);31 32         return $this->oauth->get(‘statuses/home_timeline‘, $params);33     }

 

很簡單吧?找幾個方法來試試吧。

自己寫個表單發個微博試試

<?phpsession_start();include_once( ‘config.php‘ );include_once( ‘saetv2.ex.class.php‘ );$c = new SaeTClientV2( WB_AKEY , WB_SKEY , $_SESSION[‘token‘][‘access_token‘] );
$ms  = $c->home_timeline(); // done$uid_get = $c->get_uid();$uid = $uid_get[‘uid‘];
$user_message = $c->show_user_by_id( $uid);//根據ID擷取使用者等基本資料if($_POST[‘content‘]){ $c->update($_POST[‘content‘]);}else{
}?><form action="" method="post"><input type="text" name="content"/><input type="submit" value="發布微博"/></form>


哈哈,是不是很簡單呢?


再試試擷取關注人ID
 1 /** 2      * 擷取使用者的雙向關注uid列表 3      * 4      * 對應API:{@link http://open.weibo.com/wiki/2/friendships/friends/bilateral/ids friendships/friends/bilateral/ids} 5      * 6      * @param int $uid  需要擷取雙向關注列表的使用者UID。 7      * @param int $count 單頁返回的記錄條數,預設為50。 8      * @param int $page  返回結果的頁碼,預設為1。 9      * @param int $sort  排序類型,0:按關注時間最近排序,預設為0。10      * @return array11      **/12     function bilateral_ids( $uid, $page = 1, $count = 50, $sort = 0)13     {14         $params = array();15         $params[‘uid‘] = $uid;16         $params[‘count‘] = $count;17         $params[‘page‘] = $page;18         $params[‘sort‘] = $sort;19         return $this->oauth->get( ‘friendships/friends/bilateral/ids‘,  $params  );20     }

 1 <?php 2 session_start(); 3  4 include_once( ‘config.php‘ ); 5 include_once( ‘saetv2.ex.class.php‘ ); 6  7 $c = new SaeTClientV2( WB_AKEY , WB_SKEY , $_SESSION[‘token‘][‘access_token‘] ); 8 $ms  = $c->home_timeline(); // done 9 $uid_get = $c->get_uid();10 $uid = $uid_get[‘uid‘];11 $user_message = $c->show_user_by_id( $uid);//根據ID擷取使用者等基本資料12 13 //擷取使用者的雙向關注uid列表14 $info=$c->bilateral_ids($uid);15 print_r($info);16 ?>

 

 開啟得到如下資料:

Array(    [ids] => Array        (            [0] => 2365402665            [1] => 2874824370            [2] => 2458103930            [3] => 2631415422            [4] => 1726492234            [5] => 3307625345            [6] => 1748961617            [7] => 1898400044            [8] => 5074409657            [9] => 1459729954            [10] => 1960937255            [11] => 3002010437            [12] => 1840024911            [13] => 1933041827            [14] => 3544004403            [15] => 2218615153            [16] => 1710952872            [17] => 3296525792            [18] => 2023869922            [19] => 1136908732            [20] => 5142045518            [21] => 2113440863            [22] => 2882182570            [23] => 2750918083            [24] => 5047720995            [25] => 3237485452            [26] => 2301448374            [27] => 2241922934            [28] => 3194061564            [29] => 1516453591            [30] => 3046227467            [31] => 2990824405            [32] => 2901804343            [33] => 2062251914            [34] => 1846033411            [35] => 3024328843            [36] => 3989444339            [37] => 3937835581            [38] => 2951303393            [39] => 38376110            [40] => 2403647687            [41] => 2637451094            [42] => 2257435150            [43] => 2997619907            [44] => 2272664314            [45] => 1858542007            [46] => 3566646574            [47] => 3017416653            [48] => 2017817897            [49] => 3270778184        )    [total_number] => 198)

然後我們就可以根據UID去擷取更多的資訊,比如使用者名稱,基礎資料等。

內容有點多,我就不一一去示範了

有興趣的朋友可以多看看saetv2.ex.class.php檔案

官網提供的API:http://open.weibo.com/wiki/%E5%BE%AE%E5%8D%9AAPI

好啦,就此結束吧,畢竟只是作為入門介紹

有時間再寫篇關於微博開放平台站內應用的入門介紹~See you

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.