關於什么是微博開放平台及微博開放平台能做什么,咱就不做搜索引擎的搬運工了
這里直接給個鏈接介紹:微博開放平台
本文只是拋磚引玉,講講微博開放平台的基本用法,適合沒接觸過開放平台的朋友入門學習,老鳥就略過啦~
舉例(新浪)微博開放平台:http://open.weibo.com/ (這里是官網)
先來看看關於微博開放平的台網站接入:
什么是網站接入?
舉幾個例子,比如我們經常會看到各大網站可以直接使用QQ,微博,微信等賬號直接登錄、各種文章、游戲、頁面的一鍵分享、同步到QQ空間、微博等社交工具的實時動態等,這些都是開放平台網站接入的功能。
好了,話不多說了,直接進入主題
1、首先得先注冊個新浪微博的賬號,然后登陸開放平台
然后在 管理中心->我的網站->添加新網站 填寫下關於自己網站的一些基本信息,然后復制下面的<meta>標簽里的內容到自己的網站首頁就可以完成認證了。
然后記錄下自己的WB_AKEY和WB_SKEY(這個很重要),涉及到安全,我這里就不截圖了。
在我的網站里就可以看到我們剛填寫的網站應用了
2、接着我們就可以在官網上下載相關的SDK開發工具包了,這里包括 Java , PHP, Flash, iOS, WP7, Android及 Python等語言。
下載鏈接:http://open.weibo.com/wiki/SDK
我個人用的是PHP,就說這個啦,因為SDK放在谷歌上,可能訪問有點慢。
http://code.google.com/p/libweibo/downloads/list

分別介紹下各文件:
callback.php 回調,簡單說就是認證,獲取access_token
config.php 參數配置文件,包含APP key、APP secret和回調頁面地址的參數
index.php 首頁
saetv2.ex.class.php 新浪微博的操作類和認證類,就是SDK,里面有許多注釋可以當成API來使用
weibolist.php 我們要實現的功能都在這一個php頁面中
文件執行順序為: index.php->callback.php—>weibolist.php
首先在index.php請求授權,跳轉callback.php后代表授權成功,然后進入weibolist.php進行對應操作。
在weibolist.php會實例化一個"微博操作類",然后就可以進行一系列的方法調用。
3、具體代碼實現
先修改config.php里面的配置信息,填入我們剛記錄的WB_AKEY和WB_SKEY,這里是要特別注意的是WB_CALLBACK_URL回調頁面地址的填寫,HTTP不能省略,需填寫完整的URL
<?php header('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'] );
Saetv2.ex.class.php中有兩個類:微博操作類SaeTClientV2,微博認證類SaeTOAuthV2。
操作類的實例化需要的參數 ( $akey, $skey, $access_token),而 access_token就是需要從認證類獲得的,只有我們獲得了用戶的access_token,才能對用戶進行操作。
callback.php中:
setcookie( 'weibojs_'.$o->client_id, http_build_query($token) );
在callback.php中獲得的access_token 存在了session中,在創建微博操作類的時候就可以把它拿出來用。
$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 array 15 */ 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 }
很簡單吧?找幾個方法來試試吧。
自己寫個表單發個微博試試
<?php
session_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 array 11 **/ 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