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

推荐订阅源

The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
博客园 - 聂微东
博客园 - Franky
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
雷峰网
雷峰网
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
LangChain Blog
WordPress大学
WordPress大学
H
Help Net Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Y
Y Combinator Blog
Blog — PlanetScale
Blog — PlanetScale
MyScale Blog
MyScale Blog
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
罗磊的独立博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
云风的 BLOG
云风的 BLOG
博客园 - 【当耐特】
P
Proofpoint News Feed
D
DataBreaches.Net

博客园 - 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

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