zoukankan      html  css  js  c++  java
  • 关于微博开放平台Oauth2.0接入网站应用

    关于什么是微博开放平台及微博开放平台能做什么,咱就不做搜索引擎的搬运工了

    这里直接给个链接介绍:微博开放平台

    本文只是抛砖引玉,讲讲微博开放平台的基本用法,适合没接触过开放平台的朋友入门学习,老鸟就略过啦~

    举例(新浪)微博开放平台: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放在谷歌上,可能访问有点慢。

    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会实例化一个"微博操作类",然后就可以进行一系列的方法调用。

     

    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

  • 相关阅读:
    <转> 百度空间 最大子图形问题详解
    Hdu 1124 Factorial
    Uva 457 Linear Cellular Automata
    求01矩阵中的最大的正方形面积
    【HYSBZ】1036 树的统计Count
    【SPOJ】375 Query on a tree
    【POJ】3580 SuperMemo
    【CodeForces】191C Fools and Roads
    【FOJ】2082 过路费
    【HDU】3726 Graph and Queries
  • 原文地址:https://www.cnblogs.com/lichenwei/p/3885644.html
Copyright © 2011-2022 走看看