饭否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. IOS初级:NSUserDefaults

    NSUserDefaults(偏好设置),一个APP对应一个偏好设置 保存/新增数据 //存储数据 NSUserDefaults *defaults = [NSUserDefaults standar ...

  2. Spring Boot学习笔记:JavaMailSender发送邮件

    项目中经常会有这样的需求,用户注册成功,需要给用户发送一封邮件.邮件需要有一定格式和样式.本次例子中用freemarker做样式,其他的模版引擎类似. 首先Spring Boot项目,项目结构如下 在 ...

  3. gunicorn配置文件

    最近使用gunicorn部署,感觉用命令参数方式启动比较繁琐,而且有时候就忘了以前怎么设置的了.一笑... 上stackoverflow查了查,找到了一个官方示例,在这里. 官方解释在这里. 记在这里 ...

  4. JS基础-数据类型-运算符和表达式-变量和常量

    1.js的基础语法2.js调试 1.F12调出控制台,查看提示错误及其位置. 2.出错时只影响当前代码块,不会影响其他代码块,后续代码块继续执行.3.语法规范 1.js语句:可执行的最小单元 必须以 ...

  5. python之函数篇3

    一:函数的定义 1)函数的简单使用,无参函数 def f1(): # 定义函数指定函数名 print("hello") # 指定功能 f1() # 调用函数,才能执行函数体里面的功 ...

  6. WZ后台管理框架

    http://herozhou.coding.me/vue-framework-wz/#/dashboard

  7. RAW转换成RGB

    clc; clear; close all; [filename,pathname]=uigetfile({'*.*','All Files (*.*)'},'Pick a file'); file ...

  8. JDBC连接SQL Server数据库

    测试环境 数据库:SQL Server 2008 R2,创建数据库名:TestDemo,表:User,字段如下:   字段 字段 id UName UPass sqljdbc.jar下载地址:依赖的J ...

  9. springMVC注解(一)Controller

    HelloWorld程序 Step1  编写web.xml文件 <?xml version="1.0" encoding="UTF-8"?> < ...

  10. How to transfer developer profile to one mac to another mac

    Export developer profile from old mac. In the Xcode Organizer, select your team in the Teams section ...