现在玩微博的人越来越多了而关于微博的第三方应用开发也越来越多自己在偶然间开始接触了新浪微博API开发新浪微博API开发的资源比较多新浪微博提供了一个开发者的平台网址是它里面有很全面的新浪微博开发的资料包括开发者的使用和介绍各种语言的API函数介绍文档SDK等多种资料
自己在开发和学习的过程中感觉虽然没有太大难度但还是有一些问题是需要我们注意的今天就我在开发和学习的过程中简单的对利用PHP进行新浪微博API开发的内容进行一个整理和说明
新浪微博API开发前的准备工作
首先到新浪微博开放平台下载基于PHP的SDK开发包下载地址是
下载完成后放到自己的开发环境中并解压在其中也包含了demo演示程序我们可以参考其样例程序进行编写
新浪微博API开发最重要的用户授权过程
其实在开发过程中很多的问题都是集中在用户授权这个阶段我开发的第三方应用使用的是OAuth授权关于OAuth授权的流程在新浪微博开放平台里有很清晰完整的介绍我们可以到去查看我这里从实例开发的角度进行介绍和说明
首先获取未授权的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数组变量中
然后请求用户授权Token
$_SESSION[
keys
] = $keys;
$aurl = $o
>getAuthorizeURL( $keys[
oauth_token
]
false
);
得到未授权的Request Token值后我们就利用上面的代码可以开始准备去新浪微博授权页面进行授权$aurl就是授权链接页面我们得到$aurl后就可以利用 header()直接跳转到该授权页面然后用户输入新浪微博帐号和密码进行授权授权完成后自动跳回你在最后一个参数里面设置的回调页面该链接你可以设置为上一个页面这样授权完成之后就会自动又跳转回去了
需要注意的是设置session的keys的值是必须的它在下面获取到授权的Access Token中是需要用到的很多的朋友可能会参考其开放平台上面的说明来进行授权时可发现总是出错一般都是这个问题你并未设置session的 keys值在下面当然取不到Access Token的值了这个一定要记住了
最后得到用户授权的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()样例代码看下面
//获取前条最新更新的公共微博消息
$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数组格式了