新浪微博的Oauth认证过程

转自:http://tigerszdf.blog.163.com/blog/static/45955133201072662354812/


最近弄了一个项目,被这个Oauth认证被绕晕了,好不容易跑通了逻辑,下面开始好好分析一下它的认证过程。他的认证过程简单来说可以分成3部 分:

  1. 向服务器发请求,索要一个没有授权的token和它的密钥.
  2. 拿着这个没有授权的token去网站上给用户 授权这个token,拿到一个权限核对码(verifier)
  3. 拿着这个核对码,去请求一个许可的token和它的密钥.
  4. 这 样我们就可以访问需要授权的信息了.

虽然说起来容易,而且还有Google Code 上的Oauth Api,但是经常被那些参数弄晕,导致不能继续下去,所以首先要记住一点:XXX出现在 URL中,XXX_secret就会用来做签名.

下面说说1-4步中的请求分别需要动用哪些参数。最开始,你手上会有两个 参数,一个是consumerKey,另外一个是consumerSecret

  1. 请求未授权的token和它的密钥(取名分别为t1,ts1).这里关键参数 有:oauth_consumer_key=consumerKey.只用consumerSecret来签名.
  2. 给未授权token拿给授权,获得 token(其实和t1是一个值)和核对码(verifier,取名为v2).这里关键参数 有:oauth_token=t1,oauth_callback=callbackURL(这个用于接受返回的值的地址,它有可能会在服务器端做一次跳转).这一步不需要 签名.
  3. 请求许可token和它的密钥(取名为a3as3).这里关键参数有:oauth_consumer_key=consumerKey,oauth_token=t1,oauth_verifier=v2.用consumerSecretts1做签名.
  4. 访问许可的资源.这里关键参数 有:oauth_consumer_key=consumerKey,oauth_token=a3.用consumerSecretas3做签名.

下面用sina微博的oauth认证作为事例,分析每一步的结果:

1.请求token(get):

  • url:http://api.t.sina.com.cn/oauth/request_token?oauth_signature_method=HMAC-SHA1&oauth_consumer_key=consumerKey&oauth_timestamp=&oauth_nonce=&oauth_signature=[consumerSecret]
  • 返回:oauth_token=t1&oauth_token_secret=ts1

2.授权token,注意,这一步会跳到sina登录页面上(get):

  • url:http://api.t.sina.com.cn/oauth/authorize?oauth_token=t1&oauth_callback=callbackURL
  • 返 回:callbackURL?oauth_token=t1&oauth_verifier=v2

3.获取最终的授权token(post):

  • url:http://api.t.sina.com.cn/oauth/access_token
  • post data:oauth_consumer_key=consumerKey&oauth_token=t1&oauth_signature_method=HMAC-SHA1&oauth_verifier=v2&oauth_timestamp=&oauth_nonce=&oauth_signature=[consumerSecret+ts1]
  • 返回:oauth_token=a3&oauth_token_secret=as3

4.去请求受限数据[个人信息](get):

  • url:http://api.t.sina.com.cn/account/verify_credentials.json?oauth_signature_method=HMAC-SHA1&oauth_consumer_key=consumerKey&oauth_token=a3&oauth_timestamp=&oauth_nonce=&oauth_signature=[consumerSecret+as3]

至此,就完成登录并可以访问受限资源啦!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值