首页 > Other, PHP > 通过PHP OAuth客户端访问TX微博API

通过PHP OAuth客户端访问TX微博API

目前任何用户都可以在TX的微博开放平台上注册使用APP KEY,并且初级授权无需经过官网的人工验证,开通即可使用,缺陷是访问次数有所限制,不过对于个人和一些小站来说,应该足够了,况且,我只是为了测试一下客户端罢了。
详细信息业参考官方API文档:  http://open.t.qq.com/resource.php?i=1,1&j=0
代码如下:
  1. <?php
  2. session_start();
  3. require(“../_inc/libs/OAuth/OAuth.php”);
  4. //基本属性设置
  5. $oauthAttr = array();
  6. $oauthAttr[‘callback’]           = http://www.phpme_blogex.com/_test/test.php&#8217;;
  7. $oauthAttr[‘consumer_key’]       = ‘xxba793a492744af93ba9dfdd34b726e’;
  8. $oauthAttr[‘consumer_secret’]    = ‘xx56da44c894c8aecd33f9785b0e5ce4’;
  9. //如果有访问授权令牌
  10. if($_SESSION[‘oauth’][‘access_token_secret’])
  11. {
  12. $oauthAttr[‘oauth_token’]        = $_SESSION[‘oauth’][‘access_token’];
  13. $oauthAttr[‘oauth_token_secret’] = $_SESSION[‘oauth’][‘access_token_secret’];
  14. }
  15. else if($_GET[‘oauth_verifier’])
  16. {
  17. $oauthAttr[‘oauth_verifier’]     = trim($_GET[‘oauth_verifier’]);
  18. $oauthAttr[‘oauth_token’]        = $_SESSION[‘oauth’][‘oauth_token’];
  19. $oauthAttr[‘oauth_token_secret’] = $_SESSION[‘oauth’][‘oauth_token_secret’];
  20. unset($_SESSION[‘oauth’]);
  21. }
  22. $oauth = new OAuthClient($oauthAttr[‘consumer_key’], $oauthAttr[‘consumer_secret’],
  23. $oauthAttr[‘oauth_token’], $oauthAttr[‘oauth_token_secret’]);
  24. $oauth->host             = http://open.t.qq.com&#8217;;
  25. $oauth->format           = ‘json’;
  26. $oauth->decode_json  = true;
  27. $oauth->requestTokenURL = https://open.t.qq.com/cgi-bin/request_token&#8217;;
  28. $oauth->authenticateURL = https://open.t.qq.com/cgi-bin/authenticate&#8217;;
  29. $oauth->authorizeURL    = https://open.t.qq.com/cgi-bin/authorize&#8217;;
  30. $oauth->accessTokenURL  = https://open.t.qq.com/cgi-bin/access_token&#8217;;
  31. //获得访问授权令牌
  32. if(emptyempty($_SESSION[‘oauth’][‘access_token_secret’]))
  33. {
  34. //获得临时访问token并保存
  35. if(emptyempty($oauthAttr[‘oauth_token_secret’]))
  36. {
  37. $request_token = $oauth->getRequestToken($oauthAttr[‘callback’]);
  38. //如果没有错误发生
  39. if($oauth->http_code != 200)
  40. {
  41. die(“HTTP Error: {$oauth->http_code}”);
  42. }
  43. $_SESSION[‘oauth’][‘oauth_token’]        = $oauthAttr[‘oauth_token’]        = trim($request_token[‘oauth_token’]);
  44. $_SESSION[‘oauth’][‘oauth_token_secret’] = $oauthAttr[‘oauth_token_secret’] = trim($request_token[‘oauth_token_secret’]);
  45. }
  46. //获得用户授权
  47. if(emptyempty($oauthAttr[‘oauth_verifier’]))
  48. {
  49. $url = $oauth->getAuthorizeURL($oauthAttr[‘oauth_token’], false);
  50. header(“location: {$url}”);
  51. }
  52. //获得access token并保存
  53. $access_taken = $oauth->getAccessToken($oauthAttr[‘oauth_verifier’]);
  54. //如果没有错误发生
  55. if($oauth->http_code != 200)
  56. {
  57. die(“HTTP Error: {$oauth->http_code}”);
  58. }
  59. $_SESSION[‘oauth’][‘access_token’]        = $oauthAttr[‘access_token’]        = trim($access_taken[‘oauth_token’]);
  60. $_SESSION[‘oauth’][‘access_token_secret’] = $oauthAttr[‘access_token_secret’] = trim($access_taken[‘oauth_token_secret’]);
  61. }
  62. //获得QQ微博当前用户信息
  63. $result = $oauth->get(‘/api/user/info?f=1’, array(‘format’ => ‘json’));
  64. print_r($result);
  65. ?>
1、$oauth->getRequestToken($oauthAttr[‘callback’]); 获取临时访问token,返回的数据格式是json,包含3个字段:

oauth_token=a63f4a0e1242462fb8c11e53159ba294&oauth_token_secret=40ece707e064128e4fec692e3c09c692&oauth_callback_confirmed=true
将oauth_token 和oauth_token_secret保存起来下一步使用,另外一个字段没有什么用。
2、$oauth->getAuthorizeURL($oauthAttr[‘oauth_token’], false); 需要获得用户授权,这里使用该函数获得当前临时token的授权页面并做跳转。
3、用户授权后,官方链接会跳转回我们的回调地址,并且附上2个GET方式传递的值oauth_token=80484decceb142dfaf5791c9cb9cd256&oauth_verifier=47b9122eb2bb4a3ca642a78b34158193 ,其中 oauth_token值是我们传递过去的oauth_token值,oauth_verifier 保存用于下一步获取 access_taken
4、$oauth->getAccessToken($oauthAttr[‘oauth_verifier’]); 用户获取当前授权用户的最终授权令牌,保存该令牌,用户替换当前的 oauth_token 和 oauth_token_secret 可直接初始化客户端对象,用于下一次直接访问API调用。
5、最后调用官方的API接口,并按照协议传递了相应的参数获得当前的用户信息。
然后,你可以将$access_token这个变量里面的东西保存进数据表,可以做很多各种各样有趣的事情。

但是当用户删除该授权,或者重新授权的时候,该授权将无法使用,可以在用户登录的时候进行判断、操作和更新。

分类:Other, PHP 标签:, ,
  1. 还没有评论。
  1. No trackbacks yet.

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: