饭否Oauth授权
 
首先去饭否申请一个应用,创建新应用即可,等待审核。审核通过了之后会拿到consumer_key和consumer_secret。这两个值先记录在代码里。后面经常用到。
然后第一步是用consumer_key,去换取request_token和request_token_secret。
其中有两个东西需要我们生成的,一个是时间戳timestamp,一个是随机字符串nonce
百度就可以找到生成方式。
值得注意的是时间戳需要截取前十位,也就是到秒为止。随机字符串就随便用用随机数即可。
 
这里需要重点注意的是签名和转码
获取request_token的方式是发出GET请求到指定的url。后面带的参数就按正常的GET请求的写法,即
url?key1=value1&key2=value2。。。
注意的是其中有一个签名的参数,是把base string按照HMAC-SHA1的方式加密得到的字符串。而base string是按照如下规则拼成的:
本次请求方式(GET或者POST,必须大写)+"&"+本次请求的url进行encode转码之后的结果+"&"+参数列表进行encode转码之后的结果
其中的参数列表就是上面我们要发GET请求的那些参数,也是按照key1=value1&key2=value2格式写的,不过必须按照参数名称进行排序。
第一步的参数值和参数名一般没有符号需要转码,但是中间的&和=转码之后会替换成%3D和%26。
以上内容拼起来之后的base string,按照HMAC-SHA1方式加密之后的结果也要进行转码,因为加密之后的结果的结尾一定会有一个“=”,中间也可能出现/+等符号,也要进行转码再放进get请求的url中。
HMAC-SHA1方式加密算法中需要有一个key,这个key在饭否API文档那边也没告诉我们,第一步需要用我们手里的consumer_secret末尾加一个“&”符号,作为key。
 
第一步到这里基本上就没问题了。
 
请求成功之后会返回一个oauth_token=(一大串字符)&oauth_token_secret=(一大串字符)
如果请求失败了会返回报错401,那就要检查一下签名是不是正确了,可能哪里有一点点错,就会401,这里是卡的最久的一步了。
 
第二步:
 
这个时候你要让你的应用打开这个网址:
其中request_token就是上面刚刚得到的token,callback_url,是一个属于你的url,这个url最好具备处理get请求的能力。
这个网址打开其实是一个饭否授权的界面,相信大家都看过的,如果浏览器已经登陆了饭否用户,那么就会只有一个“授权”按钮。用户点了之后,你的应用就得到了这个用户的授权,并且界面会跳转到你的callback_url上,并且在你的url后面加了?request_token=(一大串字符)
这个写法很明显,相当于对你的callback_url发送了get请求,如果你的url有处理get请求的能力,那相当于得到了一个参数,参数名是request_token,参数值你的应用需要用在下一步的请求中。
 
第三步:
 
上面的request_token得到之后,需要再发送一次请求。
跟第一步的基本相同,只是增加了一个oauth_token的参数,就是刚才得到的request_token。别忘了加进参数列表参与签名。
其他参数与第一步相同。
另外这一次的签名时候的key,前半部分不变,还是consumer_secret加一个“&”符号,后面再加上刚才第一步获得到的那个secret。
 
这次请求成功之后,得到的一对token和secret,就是这个用户对这个应用授权的access_token和access_token_secret,以后这个应用就可以使用它们,进行饭否API的调用。

饭否Oauth记录的更多相关文章

  1. swift实现饭否应用客户端源码

    swift 版 iOS 饭否客户端 源码下载:http://code.662p.com/view/13318.html 饭否是中国大陆地区第一家提供微博服务的网站,被称为中国版Twitter.用户可通 ...

  2. C#开源

    商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7-SDK E ...

  3. C# 开源项目一

    商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7-SDK E ...

  4. C#开源大全--汇总(转)

    商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7-SDK E ...

  5. C#开源大全--汇总

    商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7-SDK E ...

  6. 分享一个难得的YiBo微博客户端应用源码Android版

    今天给大家分享一款,YiBo微博客户端应用源码,这是一款专为Android用户打造的聚合型微博客户端,完美支持新浪微博.腾讯微博.搜狐微博.网易微博和饭否五个微博平台,界面清爽,使用简单轻巧,支持多账 ...

  7. C#开源汇总

    原文:C#开源汇总 商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Pho ...

  8. C# 网上收集的一些所谓的开源项目

    C#开源 商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7- ...

  9. C#开源项目大全

    C#开源项目大全   商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Ph ...

随机推荐

  1. EditText输入小数

    edtValue.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);

  2. springMVC学习 四 请求的中文乱码解决

    在使用SpringMVC时,同样有前端向后端发送请求,请求参数中有中文,需要解决中文乱码问题,在Spring中也是向java web中一样,通过一个过滤器来解决中文乱码. 这个过滤器在spring-w ...

  3. spring 学习 二 IOC/DI

    中文名称:控制反转 英文名称:( Inversion of Control ) 1 控制反转作用: 一般在编写java程序时,需要程序员自己创建对象的实例,例如 A a=new A();语句,就是程序 ...

  4. 尼克的任务(P1280)

    题目链接:尼克的任务 这道题,有点难度,也不是太难,因为我都做出来了. 好,下面分析一下: 这道题,显然的动规,我们这样设计状态. 我们设d[i]为从第i分钟初开始到结束有多少空闲时间. 那么我们的转 ...

  5. GOAP

    市面上Unity人工智能的书籍基本上都是介绍这几个方面: AI角色的自主移动 --- 操控行为, 单体,小队,群体的行为. 我之前的文章 Unity Movement AI (一) , Unity M ...

  6. 【转】python 修改os环境变量

    举一个很简单的例子,如果你发现一个包或者模块,明明是有的,但是会发生这样的错误: >>> from algorithm import *Traceback (most recent ...

  7. k-SLAM:k-mer Sorted List Alignment and Metagenomics

    k-SLAM 是基于大量高通量宏基因组序列数据分析的比对程序,它基于k-mer技术上在reads和序列之间进行比较,然后用Smith-Waterman算法验证.校准是连接在一起组成一个伪组装用来提高特 ...

  8. Codeforces Round #538 (Div. 2) E 随机数生成

    https://codeforces.com/contest/1114/problem/E 题意 交互题,需要去猜一个乱序的等差数列的首项和公差,你能问两种问题 1. 数列中有没有数比x大 2. 数列 ...

  9. Win7 VS2015环境编译Libpng

    第3次编译Libpng依然想不起任何东西,为了不浪费第4次的时间... http://libpng.com/pub/png/libpng.html http://www.zlib.net/ 解压两个压 ...

  10. vetur插件提示 [vue-language-server] Elements in iteration expect to have 'v-bind:key' directives

    错误如下图所示: 错误提示: [vue-language-server] Elements in iteration expect to have 'v-bind:key' directives.Re ...