转 新浪微博OAuth认证流程分析

对新浪微博OAuth认证的一点备忘,不求别人能看明白,只希望自己以后还能看懂……


第一步,通过已知的consumer key和consumer secret获取request token以及request token secret。

1
2
3
4
5
private function getRequestToken(){
   $output = $this ->OAuthGet(self:: $REQUEST_TOKEN , NULL);
   $token = OAuthUtil::parse_parameters( $output );
   return new OAuthToken( $token [ 'oauth_token' ], $token [ 'oauth_token_secret' ]);
}

这里的$REQUEST_TOKEN为http://api.t.sina.com.cn/oauth/request_token,这个方法不用提供给外部调用,所以可以声明为私有方法。


第二步,获取第一步传回的request token,然后引导用户前往新浪认证页面,认证成功后会返回oauth_verifier。

1
2
3
4
5
6
public function GetAuthorization() {
   $token = $this ->getRequestToken();
   $result ->Url = self:: $AUTHORIZE . "?oauth_token={$token->key}" ;
   $result ->Token = $token ;
   return $result ;
}

第二步中的$AUTHORIZE为http://api.t.sina.com.cn/oauth/authorize,即认证页面。其中返回的$result->Url加上oauth_callback参数用来做302跳转,而$result->Token要保存起来(可以存到session中)以便在第三步使用。例如:

1
2
3
$info = $oauth ->GetAuthorization();
$_SESSION [ 'request_token' ] = $info ->Token;
header( "Location: {$info->Url}&oauth_callback=" . urlencode(CALLBACK_URL . '?ret=' . $_SERVER [ 'REQUEST_URI' ]));

第三步,用户在第二步中http://api.t.sina.com.cn/oauth/authorize认证成功之后,新浪会带上oauth_verifier参数再跳转一次,地址是由上一步oauth_callback参数指定的。这一步会连同第一步返回的request token和request token secret以及第二步返回的oauth_verifier做最后一次认证,通过之后返回access token和access token secret,这对密钥可以用来访问受限的资源,认证流程到此结束。

1
2
3
4
5
public function GetAccessToken( $token , $verifier ) {
   $output = $this ->OAuthGet(self:: $ACCESS_TOKEN . "?oauth_verifier=$verifier" , $token );
   $token = OAuthUtil::parse_parameters( $output );
   return new OAuthToken( $token [ 'oauth_token' ], $token [ 'oauth_token_secret' ]);
}

第三步认证其实是在上一步oauth_callback参数指定的地址中进行的,其中$ACCESS_TOKEN为http://api.t.sina.com.cn/oauth/access_token。

 

原文:http://www.zhoumingzhi.com/2010/10/30/sina-oauth/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值