关于微博开放平台Oauth2.0接入网站应用
关于什么是微博开放平台及微博开放平台能做什么,咱就不做搜索引擎的搬运工了
这里直接给个链接介绍:微博开放平台
本文只是抛砖引玉,讲讲微博开放平台的基本用法,适合没接触过开放平台的朋友入门学习,老鸟就略过啦~
举例(新浪)微博开放平台: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的代码:
<?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获取用户等基本信息 ?>
其实一目了然了,引入配置文件,类库,实例化出对象,传参,调用方法,返回值。
比如:
$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已经写的很清楚了,大家有时间多去可以去读读源码。
/**
* 获取当前登录用户及其所关注用户的最新微博消息。
*
* 获取当前登录用户及其所关注用户的最新微博消息。和用户登录 http://weibo.com 后在“我的首页”中看到的内容相同。同friends_timeline()
* <br />对应API:{@link http://open.weibo.com/wiki/2/statuses/home_timeline statuses/home_timeline}
*
* @access public
* @param int $page 指定返回结果的页码。根据当前登录用户所关注的用户数及这些被关注用户发表的微博数,翻页功能最多能查看的总记录数会有所不同,通常最多能查看1000条左右。默认值1。可选。
* @param int $count 每次返回的记录数。缺省值50,最大值200。可选。
* @param int $since_id 若指定此参数,则只返回ID比since_id大的微博消息(即比since_id发表时间晚的微博消息)。可选。
* @param int $max_id 若指定此参数,则返回ID小于或等于max_id的微博消息。可选。
* @param int $base_app 是否只获取当前应用的数据。0为否(所有数据),1为是(仅当前应用),默认为0。
* @param int $feature 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0。
* @return array
*/
function home_timeline( $page = 1, $count = 50, $since_id = 0, $max_id = 0, $base_app = 0, $feature = 0 )
{
$params = array();
if ($since_id) {
$this->id_format($since_id);
$params['since_id'] = $since_id;
}
if ($max_id) {
$this->id_format($max_id);
$params['max_id'] = $max_id;
}
$params['count'] = intval($count);
$params['page'] = intval($page);
$params['base_app'] = intval($base_app);
$params['feature'] = intval($feature); return $this->oauth->get('statuses/home_timeline', $params);
}
很简单吧?找几个方法来试试吧。
自己写个表单发个微博试试
<?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
/**
* 获取用户的双向关注uid列表
*
* 对应API:{@link http://open.weibo.com/wiki/2/friendships/friends/bilateral/ids friendships/friends/bilateral/ids}
*
* @param int $uid 需要获取双向关注列表的用户UID。
* @param int $count 单页返回的记录条数,默认为50。
* @param int $page 返回结果的页码,默认为1。
* @param int $sort 排序类型,0:按关注时间最近排序,默认为0。
* @return array
**/
function bilateral_ids( $uid, $page = 1, $count = 50, $sort = 0)
{
$params = array();
$params['uid'] = $uid;
$params['count'] = $count;
$params['page'] = $page;
$params['sort'] = $sort;
return $this->oauth->get( 'friendships/friends/bilateral/ids', $params );
}
<?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获取用户等基本信息 //获取用户的双向关注uid列表
$info=$c->bilateral_ids($uid);
print_r($info);
?>
打开得到如下数据:
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
关于微博开放平台Oauth2.0接入网站应用的更多相关文章
- OAuth2.0学习(1-11)新浪开放平台微博认证-使用OAuth2.0调用微博的开放API
使用OAuth2.0调用API 使用OAuth2.0调用API接口有两种方式: 1. 直接使用参数,传递参数名为 access_token URL 1 https://api.weibo.com/2/ ...
- 微博开放平台api使用
前言:微博开放平台提供了微博数据的api接口,不仅可以直接通过api调用微博服务发布微博查询微博,更重要的是,可以在自己的网站上获得新浪微博api的授权,调用微博的某些内容,就好像我们再网站中看到好文 ...
- 微博开放平台开发(一)获取access_token
因为工作需要,接触到微博开放平台开发.特做此记录方便查用. 一.准备. 1.微博账号.注册很容易. 2.微博账号成为开发者. 登录微博开放平台 登录你注册的账号,然后进入管理中心完善开发者基本信息和 ...
- 微信公众平台OAuth2.0网页授权
微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使用这个的时候失败了或者无法理解其内容,希望我出个教程详细讲解一下,于是便有了这篇文章. 一. ...
- OAuth简介及sina微博开放平台
OAuth简介及sina微博开放平台 2010-10-26 13:15:25 标签:新浪 sina 微博 OAuth 开放平台 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者 ...
- 微信公众平台OAuth2.0授权
1. 配置授权回调页面域名 进入微信公众平台后台后,依次进入开发者中心-权限表,找到网页授权获取用户基本信息,点击右侧的修改. 授权回调域名配置规范为全域名并且不带http,比如需要网页授权的域名为: ...
- PHP微信公众平台oauth2.0网页授权登录类的封装demo
一.微信授权使用的是OAuth2.0授权的方式.主要有以下简略步骤: 第一步:用户同意授权,获取code 第二步:通过code换取网页授权access_token 第三步:拉取用户信息(需scope为 ...
- PHP微信公众平台OAuth2.0网页授权,获取用户信息代码类封装demo(二)
一.这个文件微信授权使用的是OAuth2.0授权的方式.主要有以下简略步骤: 第一步:判断有没有code,有code去第三步,没有code去第二步 第二步:用户同意授权,获取code 第三步:通过co ...
- php 微信公众平台OAuth2.0网页授权,获取用户信息代码类封装demo
get_wx_data.php <?php /** * 获取微信用户信息 * @author: Lucky hypo */ class GetWxData{ private $appid = ' ...
随机推荐
- Python操作SQLAlchemy之连表操作
多对一连表操作 首先有两个知识点: 改变数据输出的方式:可以在表的类中定义一个特殊成员:__repr__,return一个自定义的由字符串拼接的数据连接方式. 数据库中表关系之间除了MySQL中标准的 ...
- C#学习笔记(22)——C#创建文本文件txt并追加写入数据
说明(2017-7-31 16:25:06): 1. 有两种办法,第一种是用FileStream创建txt,用StreamWriter写入数据,期间还要加上判断,是否存在这个txt文件,如果不存在就创 ...
- 自己定义View-2-重写onMeasure
效果图 布局文件 <?xml version="1.0" encoding="utf-8"? > <LinearLayout xmlns:an ...
- strace命令学习
跟踪一个php程序的运行: strace -s 1000 -f -o test.log php test.php 对于守护进程(后台一直跑的进程) php test.php & 得到它的P ...
- WCF安全:通过 扩展实现用户名密码认证
在webSservice时代,可以通过SOAPHEADER的方式很容易将用户名.密码附加到SOAP header消息头上,用户客户端对调用客户端身份的验证.在WCF 时代,也可以通过Operation ...
- jquery笔记一——小问题+小技巧
1.table行单击选中radio(传说中input[type=radio]比input:radio要快) <tr class="rowSelect"> <td& ...
- JS运动 - 无缝滚动和缓动动画
JS运动 - 无缝滚动和缓动动画 无缝滚动原理:首先先复制两张图片(第一张和第二张)放到最后面;ul绝对定位,如果ul的left值大于等于4张图片的宽度,就应该快速复原为0. html <!DO ...
- 将url参数转为json对象
/** * 将url参数转为json对象 * * @param str * @returns {{}} */ function parseQueryString(str){ arr = [], len ...
- Spring Cloud Config 配置中心
请将远程配置文件的格式写对: 比如使用 *.yml 或者 *.properties yml: testconfig: testvalue properties: testconfig=testvalu ...
- 一个从MongoDB中导出给定日期范围内数据的shell脚本
#!/bin/sh ver=`date "+%Y%m%d"` #d1, the beginning date, eg:2017-06-28 d1=$1 d1=`date -d $d ...