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

關於什麼是微博開放平臺及微博開放平臺能作什麼,咱就不作搜索引擎的搬運工了php

這裏直接給個連接介紹:微博開放平臺html

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

舉例(新浪)微博開放平臺:http://open.weibo.com/ (這裏是官網)服務器

 

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

什麼是網站接入?cookie

舉幾個例子,好比咱們常常會看到各大網站能夠直接使用QQ,微博,微信等帳號直接登陸、各類文章、遊戲、頁面的一鍵分享、同步到QQ空間、微博等社交工具的實時動態等,這些都是開放平臺網站接入的功能。session

 

好了,話很少說了,直接進入主題app

一、首先得先註冊個新浪微博的帳號,而後登錄開放平臺工具

http://open.weibo.com/post

而後在 管理中心->個人網站->添加新網站  填寫下關於本身網站的一些基本信息,而後複製下面的<meta>標籤裏的內容到本身的網站首頁就能夠完成認證了。

而後記錄下本身的WB_AKEY和WB_SKEY(這個很重要),涉及到安全,我這裏就不截圖了。

在個人網站裏就能夠看到咱們剛填寫的網站應用了

二、接着咱們就能夠在官網上下載相關的SDK開發工具包了,這裏包括 Java , PHP, Flash, iOS, WP7, Android及 Python等語言。

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

我我的用的是PHP,就說這個啦,由於SDK放在谷歌上,可能訪問有點慢。

 

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頁面中

 

文件執行順序爲: index.php->callback.php—>weibolist.php

首先在index.php請求受權,跳轉callback.php後表明受權成功,而後進入weibolist.php進行對應操做。

在weibolist.php會實例化一個"微博操做類",而後就能夠進行一系列的方法調用。

 

三、具體代碼實現

先修改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

相關文章
相關標籤/搜索