用于微博开放平台OAuth的lib SaeT上线了

** SaeT已改名为SaeTOAuth 建议直接使用SaeTClient 相关文档以官方文档为准 **

  1. 使用SaeT前的准备工作

要使用SaeT,你必须拥有一个微博开放平台的帐号.可以到这里申请.申请通过后,微博开放平台会给你APP KEY和APP SECRET.

只有拥有APP KEY和APP SECRET才能和微博平台进行交互.

了解OAuth

微博开放平台支持两种认证方式,一种是需要用户输入用户名和密码的Basic验证,一种是不需要用户提供密码的OAuth.我们只提供OAuth方式的class.

OAuth通过应用和微博授权页面之间的跳转来进行授权.
其步骤为

  1. 应用向微博平台发起请求,获得一个临时的oauth_token,和oauth_token_secret(A),这套key被称为request token.
  2. 应用将用户转向到微博授权页面,同时带上这个token和一个回调页面地址
  3. 用户在微博上同意授权后,会生成oauth_verifier(B),并在转向到回调页面是带上这个值.
  4. 应用通过$_REQUEST得到oauth_verifier,再加上之前(A)处的oauth_token和oauth_token_secret,向微博发起最后一次请求.
  5. 微博平台验证无误后,发给应用另外一套oauth_token和oauth_token_secret(C),这套key被成为access token.
  6. 拿到access token意味着应用已经获得了授权.之后应用就可以通过access token获取和发送微博了.

access token不用每次都去取,可以把它保存下来,供下次使用.这样性能更高.

使用SaeT

由于微博接口属于SAE以外的服务,所以我们需要手工载入class,并初始化对象.

include_once( 'saet.ex.class.php' );
$o = new SaeT( WB_AKEY , WB_SKEY ); // APP KEY和APP SECRET

然后进行上一段中的(1)

$keys = $o->getRequestToken(); // 取得oauth_token

接着获得(2)中要用到的url,第三个参数指定了回调页面

 $aurl = $o->getAuthorizeURL( $keys['oauth_token'] ,false , 'http://'. $_SERVER['HTTP_APPNAME'] . '.sinaapp.com/callback.php');

通过提示用户点击链接或者header(“Location:aulr”)等方式将页面转向.

用户被带到微博授权页面上,当他点击同意后,微博会将他转向到callback.php.

我们在callback.php里边继续.

因为是一个新的页面,需要重新载入class并初始化.

include_once( 'saet.ex.class.php' );
$o = new SaeT( WB_AKEY , WB_SKEY , $_SESSION['keys']['oauth_token'] , $_SESSION['keys']['oauth_token_secret']  );

注意这里new的时候多带了两个参数,是在(A)处获得的值.因为跨页面了,我们一般把它们存在Session里边.
oauth_verifier就在callback接收到的$_REQUEST里边.这三个值准备好后,我们再请求最后一次认证.

$last_key = $o->getAccessToken(  $_REQUEST['oauth_verifier'] ) ;

这样我们就得到了(C)处的两个值.在它们过期之前(微博目前是永久的),我们都可以直接通过这两个值来和微博进行数据交换了.

$o = new SaeT( WB_AKEY , WB_SKEY , $_SESSION['last_key']['oauth_token'] , $_SESSION['last_key']['oauth_token_secret']  );
// 取得用户的最近5条微博
$ms  = $o->get("http://api.t.sina.com.cn/statuses/user_timeline.json?count=5");

// 发布微博
$o->post( “http://api.t.sina.com.cn/statuses/update.json” , array( ‘status’ => ‘always test’ ) );

REST接口部分的地址和参数请参考微博开放平台的wiki http://open.t.sina.com.cn/

这里是完整的示范代码,你也可以访问 demo001.sinaapp.com 体验授权过程.

Comment

  • Trackback are closed
  • Comments (2)
  1. 立马去试试,顺便推广一下 SAE 交流 QQ群:41674533 [注意:有号的进 谢谢]

  2. demo001 乱码了一下。FF浏览器
    显示如下 :
    鎺堟潈瀹屾垚,杩涘叆浣犵殑寰崥鍒楄〃椤甸潰

Comment are closed.