新浪微博API开发简介之用户授权(PHP基础篇)


Posted in PHP onSeptember 25, 2011

现在玩微博的人越来越多了,而关于微博的第三方应用开发也越来越多,自己在偶然间开始接触了新浪微博API开发,新浪微博API开发的资源比较多,新浪微博提供了一个开发者的平台,网址是:http://open.weibo.com,它里面有很全面的新浪微博开发的资料,包括开发者的使用和介绍,各种语言的API函数介绍文档,SDK等多种资料。

自己在开发和学习的过程中,感觉虽然没有太大难度,但还是有一些问题是需要我们注意的,今天就我在开发和学习的过程中,简单的对利用PHP进行新浪微博API开发的内容进行一个整理和说明,

新浪微博API开发前的准备工作

首先到新浪微博开放平台下载基于PHP的SDK开发包,下载地址是:http://code.google.com/p/libweibo/downloads/detail?name=weibo-oauth-class-with-image-avatar-06-29.zip

下载完成后放到自己的开发环境中并解压,在其中也包含了demo演示程序,我们可以参考其样例程序进行编写。

新浪微博API开发最重要的用户授权过程

其实在开发过程中很多的问题都是集中在用户授权这个阶段,我开发的第三方应用,使用的是OAuth授权,关于OAuth授权的流程在新浪微博开放平台里有很清晰完整的介绍,我们可以到http://open.weibo.com/wiki/Oauth去查看,我这里从实例开发的角度进行介绍和说明。

1.首先获取未授权的Request Token

$o = new WeiboOAuth( WB_AKEY , WB_SKEY ); 
$keys = $o->getRequestToken(); 
//echo($keys['oauth_token'].' : '.$keys['oauth_token_secret']);

我们需要在新浪微博开放平台中注册一个帐号,或直接使用我们的新浪微博帐号登录,进入我的应用,然后按照提示创建属于我们自己的第三方应用,创建完成之后我们可以得到两个授权的App Key和App Secret值,这两个值就是我们开发应用的关键。
得到授权值后,我们就可以利用上面的代码获得未授权的Request Token值了,它们会保存在$key数组变量中。
2.然后请求用户授权Token
$_SESSION['keys'] = $keys; 
aurl = $o->getAuthorizeURL( $keys['oauth_token'] ,false , 'http://localhost/callback.php');

得到未授权的Request Token值后,我们就利用上面的代码可以开始准备去新浪微博授权页面进行授权,$aurl就是授权链接页面,我们得到$aurl后就可以利用header()直接跳转到该授权页面,然后用户输入新浪微博帐号和密码进行授权,授权完成后,自动跳回你在最后一个参数里面设置的回调页面:http://localhost/callback.php,该链接你可以设置为上一个页面,这样授权完成之后就会自动又跳转回去了。
需要注意的是设置session的keys的值是必须的,它在下面获取到授权的Access Token中是需要用到的。很多的朋友可能会参考其开放平台上面的说明来进行授权时,可发现总是出错,一般都是这个问题,你并未设置session的keys值,在下面当然取不到Access Token的值了,这个一定要记住了。
3.最后得到用户授权的Access Token
$o = new WeiboOAuth( WB_AKEY , 
WB_SKEY , 
$_SESSION['keys']['oauth_token'] , 
$_SESSION['keys']['oauth_token_secret'] ); 
$last_key = $o->getAccessToken( $_REQUEST['oauth_verifier'] ) ; 
echo($last_key['oauth_token']);

上面的代码就最终获得了用户授权的Access Token,共两个值,它们保存在$last_key数组变量里面,我们也可以看到,后面的两个参数就是前面我们设置的session值。到此就基本完成了,这就是新浪微博用户授权的一个完整的过程。
授权完成后的工作
在授权完成之后,我们就可以开始调用新浪微博提供的各类API函数接口进行实际应用的开发了,在这里我就获取最新微博记录这个接口进行一个简单说明,其他都类似。
获取最新新浪微博信息的API接口函数是:public_timeline(),样例代码看下面:
//获取前20条最新更新的公共微博消息 
$c = new WeiboClient( WB_AKEY , 
WB_SKEY , 
$oauth_token , 
$oauth_token_secret ); 
$msg = $c->public_timeline(); 
if ($msg === false || $msg === null){ 
echo "Error occured"; 
return false; 
} 
if (isset($msg['error_code']) && isset($msg['error'])){ 
echo ('Error_code: '.$msg['error_code'].'; Error: '.$msg['error'] ); 
return false; 
} 
print_r($msg);

通常我们在得到用户授权的Access Token值之后,就把它们保存在我们的用户表中,与我们的应用中的帐号进行对应,之后我们在调用新浪微博各api接口时就不用每次都去认证了。
上面的代码很简单,实例化WeiboClient对象,然后直接调用接口函数public_timeline就可以得到返回的信息,如果没有错误的话。通常新浪微博api接口返回的数据格式一般为Json格式或xml格式,而我们在此是用php进行开发,则使用Json格式的数据就有先天的优势,如果返回Json格式数据的话,直接使用php函数json_decode()就可以转换为php常用的array数组格式了。
来源:红心草博客
原文地址:http://www.hongxincao.com/archives/579.html
PHP 相关文章推荐
第十节 抽象方法和抽象类 [10]
Oct 09 PHP
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
Dec 13 PHP
简单的PHP图片上传程序
Mar 27 PHP
PHP写入WRITE编码为UTF8的文件的实现代码
Jul 07 PHP
利用Memcached在php下实现session机制 替换PHP的原生session支持
Aug 21 PHP
使用session判断用户登录用户权限(超简单)
Jun 08 PHP
PHP Global定义全局变量使用说明
Aug 15 PHP
PHP读取文件内容的五种方式
Dec 28 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
Jan 09 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
Aug 18 PHP
PHP implode()函数用法讲解
Mar 08 PHP
PHP 对象接口简单实现方法示例
Apr 13 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
Sep 23 #PHP
PHP将DateTime对象转化为友好时间显示的实现代码
Sep 20 #PHP
php方法调用模式与函数调用模式简例
Sep 20 #PHP
php若干单维数组遍历方法的比较
Sep 20 #PHP
PHP学习笔记 用户注册模块用户类以及验证码类
Sep 20 #PHP
PHP无刷新上传文件实现代码
Sep 19 #PHP
PHP通过正则表达式下载图片到本地的实现代码
Sep 19 #PHP
You might like
WAR3重制版DOTA 5V5初体验
2020/04/09 DOTA
如何对PHP程序中的常见漏洞进行攻击(下)
2006/10/09 PHP
php 随机数的产生、页面跳转、件读写、文件重命名、switch语句
2009/08/07 PHP
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
2011/12/25 PHP
8个必备的PHP功能实例代码
2013/10/27 PHP
CI框架支持$_GET的两种实现方法
2016/05/18 PHP
php输出图像的方法实例分析
2017/02/16 PHP
Firefox outerHTML实现代码
2009/06/04 Javascript
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
js判断生效时间不得大于失效时间的思路及代码
2013/04/23 Javascript
JavaScript动态创建div属性和样式示例代码
2013/10/09 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
2013/12/23 Javascript
解析Javascript单例模式概念与实例
2016/12/05 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
2018/01/31 Javascript
vue 设置路由的登录权限的方法
2018/07/03 Javascript
Vue.js单向绑定和双向绑定实例分析
2018/08/14 Javascript
element UI upload组件上传附件格式限制方法
2018/09/04 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
基于javascript实现日历功能原理及代码实例
2020/05/07 Javascript
Python自定义函数定义,参数,调用代码解析
2017/12/27 Python
微信跳一跳python自动代码解读1.0
2018/01/12 Python
python dataframe向下向上填充,fillna和ffill的方法
2018/11/28 Python
Python3视频转字符动画的实例代码
2019/08/29 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
2020/03/06 Python
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
NIHAOMARKET官方海外旗舰店:意大利你好华人超市
2018/01/27 全球购物
品学兼优的大学生自我评价
2013/09/20 职场文书
ktv筹备计划书
2014/05/03 职场文书
学生抄袭作业的检讨书
2014/10/02 职场文书
债务纠纷委托书范本
2014/10/14 职场文书
赔偿协议书
2015/01/27 职场文书
部分武汉产收音机展览
2022/04/07 无线电