惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

云风的 BLOG
云风的 BLOG
The GitHub Blog
The GitHub Blog
A
About on SuperTechFans
P
Proofpoint News Feed
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
IT之家
IT之家
Microsoft Security Blog
Microsoft Security Blog
F
Fortinet All Blogs
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
C
Check Point Blog
Microsoft Azure Blog
Microsoft Azure Blog
aimingoo的专栏
aimingoo的专栏
月光博客
月光博客
美团技术团队
D
Docker
博客园 - Franky
Y
Y Combinator Blog
大猫的无限游戏
大猫的无限游戏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 【当耐特】
罗磊的独立博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

博客园 - shaoyun

Python抓取百度搜索结果 多线程采集器的核心代码 ThinkPHP2.1模版使用笔记 - 模版嵌套/AJAX级联 畅想无线显示技术 ASP.Net 一步一步学习分页(适合初学者) - shaoyun - 博客园 通用四级联动下拉列表 通用手动分页方法 通用三级联动下拉列表 Indy 邮件发送的例子 Indy 组件学习注意事项 利用API的消息发送程序原理 Delphi DLL 的编写 Discuz!NT3.1 子目录安装实例 Delphi 托盘程序示例 Delphi ADO 学习笔记 SQL获取数据表的空间占用 C#编写简单的系统服务管理器 很久没有写博了,发发挠骚 Twitter被封后教你继续访问的方法
OAuth协议分析一
shaoyun · 2010-10-27 · via 博客园 - shaoyun

时间:2010-10-27 11:41 作者:shaoyun

这些分析基于OAuth协议和Sina的开发文档,参考PHP、C#的SDK,用Fiddler提交测试得来

第一部分:获取的未授权的Request Token和对应的Request Token Secret

提交地址:

http://api.t.sina.com.cn/oauth/request_token

提交方式:GET

参数列表:

oauth_consumer_key 我们申请的APIkey
oauth_nonce 随机值,这里根据时间随机生成32位的md5值
oauth_signature 参数签名
oauth_signature_method 签名算法
oauth_timestamp 获取的当前时间戳整型值
oauth_version OAuth协议版本

待签名的字符串如下
GET&http%3A%2F%2Fapi.t.sina.com.cn%2Foauth%2Frequest_token&oauth_consumer_key%3D888888888%26oauth_nonce%3D08e59bdb879d2f4b96eb20158d7a5b47%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1288149739%26oauth_version%3D1.0a

第一个参数和第二参数之间,第二个参数和第三个参数之间用&连接,第三个参数往后都进行urlencode,这就是要签名的字符串

签名算法,这里我们用HMAC-SHA1,key为App Secret,申请的那个

$key='e547036cd665c647f4561ede6820fde0&';
base64_encode(hash_hmac('sha1', $base_string, $key, true));

生成的签名
oauth_signature=urlencode('5QkdZySrnlASeEOCcXtm7HspdyI=');

最终get的地址为
http://api.t.sina.com.cn/oauth/request_token?oauth_consumer_key=888888888&oauth_nonce=08e59bdb879d2f4b96eb20158d7a5b47&oauth_signature=5QkdZySrnlASeEOCcXtm7HspdyI%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1288149739&oauth_version=1.0a

成功提交后服务器返回的字符串如下
oauth_token=78ad5974c2b5c3a9de0fca3d1698470f&oauth_token_secret=7e3c4cce0585101bc4b931136ba7ed90

这个就是获取的未授权的Request Token和对应的Request Token Secret

这里只是分析,与平台语言无关,具体实现根据情况,这才是认证的第一步,后面的与这类似,有时间再写。