技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> PHP --> 新浪微博OAuth认证流程分析

新浪微博OAuth认证流程分析

浏览:4078次  出处信息

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


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

以下是代码片段:
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。

以下是代码片段:
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中)以便在第三步使用。例如:
以下是代码片段:
$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,这对密钥可以用来访问受限的资源,认证流程到此结束。

以下是代码片段:
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。

建议继续学习:

  1. 基于PECL OAuth打造微博应用    (阅读:4070)
  2. 深入理解OAuth与豆瓣OAuth test    (阅读:3877)
  3. PHP for Twitter OAuth 教学演示    (阅读:3540)
  4. 在sae中利用SaeFetchurl进行豆瓣的OAuth授权    (阅读:3586)
  5. OAuth那些事儿    (阅读:3202)
  6. OAuth 1.0a与1.0协议的改进…    (阅读:2900)
  7. 新浪微博 Android SDK中OAuth2.0隐式授权部分的一个代码逻辑问题    (阅读:2489)
  8. [演讲稿]OAuth1.0协议    (阅读:2409)
  9. 简述 OAuth 2.0 的运作流程    (阅读:2431)
  10. OAuth的改变    (阅读:2312)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1