新浪微博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 相关文章推荐
用PHP连接Oracle for NT 远程数据库
Oct 09 PHP
php 全局变量范围分析
Aug 07 PHP
PHP下对字符串的递增运算代码
Aug 21 PHP
php tp验证表单与自动填充函数代码
Feb 22 PHP
深入理解:XML与对象的序列化与反序列化
Jun 08 PHP
30个php操作redis常用方法代码例子
Jul 05 PHP
PHP中unset,array_splice删除数组中元素的区别
Jul 28 PHP
PHP定时执行任务实现方法详解(Timer)
Jul 30 PHP
php批量删除超链接的实现方法
Oct 19 PHP
PHP json_encode() 函数详解及中文乱码问题
Nov 05 PHP
thinkPHP5实现的查询数据库并返回json数据实例
Oct 23 PHP
PHP实现一个轻量级容器的方法
Jan 28 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
PHP stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
2013/08/10 PHP
PHP中使用数组指针函数操作数组示例
2014/11/19 PHP
js实现浏览器的各种菜单命令比如打印、查看源文件等等
2013/10/24 Javascript
jquery实现弹出层完美居中效果
2014/03/03 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
2015/11/23 Javascript
AngularJs动态加载模块和依赖注入详解
2016/01/11 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
2016/05/13 Javascript
微信小程序 教程之条件渲染
2016/10/18 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
2016/10/25 Javascript
JavaScript实现的select点菜功能示例
2017/01/16 Javascript
微信小程序 template模板详解及实例
2017/02/21 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
nodejs+websocket实时聊天系统改进版
2017/05/18 NodeJs
快速将Vue项目升级到webpack3的方法步骤
2017/09/14 Javascript
React Native使用百度Echarts显示图表的示例代码
2017/11/07 Javascript
vue树形结构获取键值的方法示例
2018/06/21 Javascript
Vue与Node.js通过socket.io通信的示例代码
2018/07/25 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
[50:12]EG vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
在Python中使用SQLite的简单教程
2015/04/29 Python
python模块和包的应用BASE_PATH使用解析
2019/12/14 Python
Python 3.8 新功能来一波(大部分人都不知道)
2020/03/11 Python
Html5页面中的返回实现的方法
2018/02/26 HTML / CSS
保送生自荐信范文
2013/10/06 职场文书
大学生活学习的自我评价
2013/12/03 职场文书
2014年电信员工工作总结
2014/12/19 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
入党介绍人意见2015
2015/06/01 职场文书
有关三国演义的读书笔记
2015/06/25 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书
2016民族团结先进个人事迹材料
2016/02/26 职场文书
关于Vue Router的10条高级技巧总结
2021/05/06 Vue.js
Mysql事务索引知识汇总
2022/03/17 MySQL
canvas 中如何实现物体的框选
2022/08/05 Javascript