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

  • 相关阅读:
    032 Gradle 下载的依赖jar包在哪?
    031 can't rename root module,Android Studio修改项目名称
    030 Cannot resolve symbol'R' 问题解决汇总大全
    029 Android Studio层级显示目录文件
    028 You are about to commit CRLF line separators to the Git repository.It is recommended to set the core. autocrlf Git attribute to true to avoid line separator issues If you choose Fix and Comit ,
    027 【Android基础知识】Android Studio 编译慢及 Adb connection Error:远程主机强迫关闭了一个现有的连接
    026 Android Studio 和Gradle版版本对应关系
    025 Cause: org.jetbrains.plugins.gradle.tooling.util.ModuleComponentIdentifierIm
    024 Android Studio上传项目到Github 最全记录
    023 解决AndroidStudio下载gradle慢的问题
  • 原文地址:https://www.cnblogs.com/lichenwei/p/3885644.html
Copyright © 2011-2022 走看看