Archive

Posts Tagged ‘腾讯微博’

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

2011-07-25 留下评论
目前任何用户都可以在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 标签:, ,

腾讯微博PHP OAuth授权

2011-07-25 留下评论

之前研究过新浪微博OAuth授权,刚巧腾讯微博最近也开放API了.

本想使用Ruby OAuth来进行授权,只是每次在获取AcessToken的时候,都出现签名错误。
问题耽搁了很久,且一直未能解决,最后是直接使用了官方的PHP SDK来绕过了,并结合需求,实现了两个功能:
1.授权成功的同时,绑定到自家网站的用户id,没有就生成一个.
2.将PHP的发微博功能封装成了一个API,供自家调用.

authorize.php <!-- 这里是OAuth入口 -->
<?php
  @header('Content-Type:text/html;charset=utf-8');
  session_start();
  require_once('config.php'); //配置AppKey, AppSecret
  require_once('oauth.php');
  require_once('opent.php');
  $o = new MBOpenTOAuth( MB_AKEY , MB_SKEY );
  $keys = $o->getRequestToken('http://api.5yi.com/qq/callback.php');//这里填上你的回调URL
  $aurl = $o->getAuthorizeURL( $keys['oauth_token'] ,false,'');
  $_SESSION['keys'] = $keys;
  header("Location: ".$aurl);
?> callback.php
<!-- OAuth回调地址,绑定我易网用户 -->
<?php
  @header('Content-Type:text/html;charset=utf-8');
  session_start();
  @require_once('config.php');
  @require_once('oauth.php');
  @require_once('opent.php');
  @require_once('api_client.php');
  // 获取Acess Token
  $o = new MBOpenTOAuth( MB_AKEY , MB_SKEY , $_SESSION['keys']['oauth_token'] , $_SESSION['keys']['oauth_token_secret'] );
  $last_key = $o->getAccessToken( $_REQUEST['oauth_verifier'] );
  $_SESSION['last_key'] = $last_key;
  // 获取用户的信息
  $c = new MBApiClient( MB_AKEY , MB_SKEY , $_SESSION['last_key']['oauth_token'] , $_SESSION['last_key']['oauth_token_secret'] );
  $response = $c->getUserInfo();
  // 重定向到我易网登录API,绑定我易网用户id
  $url = "http://api.5yi.com:9080/third_login/t_qq?token=".$last_key['oauth_token']."&secret=".$last_key['oauth_token_secret']."&uid=".$response['data']['name']."&uname=".$response['data']['nick']."&source=tqq";
  header("Location: ".$url);
?>
post.php
<!-- 调用PHP接口,发送微博信息 -->
<?php
@header('Content-Type:text/html;charset=utf-8');
session_start();
@require_once('config.php');
@require_once('oauth.php');
@require_once('opent.php');
@require_once('api_client.php');
//$c = new MBApiClient( MB_AKEY , MB_SKEY , $_SESSION['last_key']['oauth_token'] , $_SESSION['last_key']['oauth_token_secret'] );
$c = new MBApiClient( MB_AKEY , MB_SKEY , $_REQUEST['oauth_token'] , $_REQUEST['oauth_token_secret'] );
//发消息
$p =array(
'c' => ''.$_REQUEST["text"],
'ip' => $_SERVER['REMOTE_ADDR'],
'j' => '',
'w' => ''
);
var_dump($c->postOne($p));
?>
分类:PHP 标签:, ,

腾讯微博连接:使用 QQ 号码登录你的 WordPress 博客

2011-07-24 留下评论

腾讯微博开放了 API,并且支持 OAuth 协议,所以我继续开发腾讯微博连接这款 WordPress 插件,他能让你使用 QQ 号码登录 WordPress 博客。

腾讯微博连接是使用腾讯微博 API 接口开发的一个 WordPress 插件,它的能让用户使用腾讯微博账号登陆 WordPress 博客,并且可以直接使用腾讯微博的头像,并且能够更新留言和日志到腾讯微博。

腾讯微博连接的主要功能

  • 使用腾讯微博账号登陆 WordPress 博客,腾讯微博连接插件会在留言框,注册页面,登录页面都会加入使用腾讯微博连接的按钮,你只要几次点击,然后到腾讯微博进行简单的验证就能使用腾讯微博账号登陆 WordPress 博客。
  • 同步留言到腾讯微博,腾讯微博连接插件会在留言框增加一个选项,让用户选择是否把自己的留言同步到腾讯微博,方便用户跟踪自己的网上行为,把腾讯微博当作自己的 lifestream 一种方式。
  • 同步日志到腾讯微博,腾讯微博连接插件能够让 WordPress 管理员绑定一个腾讯微博的账号,然后博客日志更新的时候,自动更新一条微博(标题+链接)到腾讯微博。

腾讯微博连接的安装要求

很多同学是有这个插件的主要的问题是不符合安装需求,腾讯微博连接对服务器的要求比较高:

  • WordPress 3.0 版本以上
  • PHP 5.2,因为腾讯微博 OAuth 类使用 PHP Class 语法,所以 PHP 版本要求 5.2 以上。
  • 支持 CURL 扩展,因为使用 CURL 进行连接,你可以通过 phpinfo() 函数来检测 PHP 版本和是否支持 CURL 扩展。

腾讯微博连接的详细安装和使用说明

  1. 首先到这里下载 腾讯微博连接 WordPress 插件,然后上传激活。
  2. 安装激活之后,你应该在留言框处可以看到 腾讯连接 的按钮。
  3. 如果没有出现该按钮,检查下是否你的主题的 comments.php 文件中含有 comment_form 这个 action,如果没有请加上:
    <?php do_action('comment_form', $post->ID); ?>
  4. 当然如果你想自定义 腾讯连接 的位置,可以通过在 comments.php 文件添加以下函数实现:
    <?php qq_connect(); ?>
  5. 通过 WordPress 后台 > 设置 > 同步到腾讯微博菜单来激活同步 WordPress 博客日志到腾讯微博的功能。

腾讯微博连接的常见问题

  1. 再次强调安装这个插件需要,WordPress 3.0 及以上版本PHP 5.2 及以上版本,并且支持 CURL 扩展,由此产生的问题,不再重复回答。
  2. 评论者的链接是微博中自己设的链接,能否调用评论者的微博地址?不能,如果你想实现该功能,请把 128 行的 $qqInfo->url 改成:"http://t.qq.com/".$qc_user_name
  3. 为什么使用腾讯微博注册的用户的邮箱是 ****@t.qq.com 这样的邮件地址,显然这是不存在的啊。

    因为腾讯微博的 API 没有提供也不可能提供用户的邮箱地址,而 WordPress 用户注册,必须需要邮箱,所以只能使用这样的邮箱方式来代替,****@t.qq.com,并且这样还有一个好处,当你需要找有多少用户是腾讯微博的用户的时候,你可以使用这个 t.qq.com.cn 这个来检索。

  4. 自定义位置这个函数怎么用?

    这个只能告诉你把上面说的函数放到 comments.php 文件中,具体怎么放,怎么修改,你只能自己去学习。

  5. 出现 Call to undefined function menu_page_url() 或者 Call to undefined function get_user_meta() 这个问题,是怎么回事?

    请升级到 WordPress 3.0 版本,上面安装要求已经告诉你要 3.0 及以上版本。

  6. 如果用户使用腾讯微博在博客上注册一个用户,并且他的腾讯微博用户名跟博客的一个现有用户相同,就会获取该用户的权限,这样是不是有风险?

    这样确实存在风险,你可以给腾讯注册的用户名添加一个前缀来解决,在139行,'user_login' => $userinfo[1], 改成:'user_login' => 'qq_t_'.$userinfo[1],

下载腾讯微博连接

对于腾讯微博连接就介绍到这里,有什么问题请给我留言,你也可以在本博客使用腾讯微博账号尝试登陆下。

下载:腾讯微博连接 WordPress 插件

我的腾讯微博是:http://t.qq.com/zhuohang,欢迎围观!

腾讯微博 API 简介

2011-07-24 留下评论

腾讯微博开放平台正式推出,除了以前的推出微博应用频道,这次腾讯微博还正式开放 API,为了保证 QQ 帐号的安全,腾讯微博 API 只支持 OAuth 登陆验证,不支持 HTTP Basic 认证。

腾讯微博 API 分成下面几个方面:

  • Oauth 授权
  • 时间线
  • 微博相关
  • 帐户相关
  • 关系链相关
  • 私信相关
  • 搜索相关
  • 热度,趋势
  • 数据更新相关
  • 数据收藏
  • 话题相关

基本上腾讯微博的 API 还算简单,我简单高了下,就做了一个腾讯微博连接的 WordPress 插件。能使用腾讯微博帐号登录 WordPress 博客(你可以在留言区测试下)。目前还没有做同步留言和日志的功能。等这些功能完成会发布出来给大家使用。

我的腾讯微博:http://t.qq.com/zhuohang/

分类:Other 标签:, ,