如何用Qt实现对Google API的应用(2)-- OAuth的各步骤实现
来源:互联网 发布:被淘宝删除评价怎么办 编辑:程序博客网 时间:2024/04/29 02:42
为了使用OAuth验证流程成功的调用Google API,需要先获取OAuth Access Token
在OAuth Access Token的获取过程中,我们需要依次解决以下几个问题:
1.为获取Access Token准备TimeStamp,Nonce和HMAC-SHA1签名
a. TimeStamp的获取方法:
简单的使用QDateTime::currentMSecsSinceEpoch()/1000可以获得
b. Nonce的获取算法:
Nonce,是单次值的意思,就是说在每一次Request请求发出时的随机32位值,以保证操作是单次的,用于避免多次重复的请求式攻击
其实在很多应用中都会用到Nonce,nonce等于Universally Unique Identifier的概念,所以这里可以使用Qt的QUuid生成随机的nonce值。因为QUuid生成的随机样式为{67C8770B-44F1-410A-AB9A-F9B5446F13EE},所以我们需要将其中的“{”,“}”和“-”符号去掉
QString nonce = QUuid::createUuid().toString().remove(QRegExp("[{,},-]"));
c. HMAC-SHA1签名算法:
含密钥的安全哈希算法,为加密算法的一种,在第三方应用请求时使用
下面给出实现代码,具体算法请Google
2. 各步骤的Signature生成方式
a. Request Token时的Signature生成:
使用consumer key和consumer secret的组合作为Key,与baseString进行签名
第三方应用使用anonymous作为其consumer key和consumer secret,生成的Key为“anonymous&”
b. Request Authorize Token时的Signature生成:
缺
c. Reques tAccess Token时的Signature生成:
缺
d. 使用Access Token时的Signature生成
使用consumer key和consumer secret和token_secret组合作为Key与baseString进行签名
token_secret为申请Access Token前Authorize Token授权后获得的,需要先保存起来并在这里应用
如:token_secret=x1qzR2SBgH8waTVHvHS6jYNg
consumer key和consumer secret为anonymous,生成的Key为
Key = anonymous&x1qzR2SBgH8waTVHvHS6jYNg
- 如何用Qt实现对Google API的应用(2)-- OAuth的各步骤实现
- 如何用Qt实现对Google API的应用(1)-- OAuth认证详述
- 如何用QT实现txt文件的读写
- 如何用c#实现对中文的md5加密
- C#如何用GDI+实现对图形的多边形输出
- 如何用Google APIs和Google的应用系统进行集成(3)----调用Google 发现(Discovery)API的RESTful服务
- [Google]如何用 互斥锁 实现 读写锁
- 如何用实现.NET的插件机制
- 如何用FPGA实现算法的硬件加速
- 如何用c实现可执行文件的复制
- 如何用JAVA实现文件的覆盖
- 如何用C实现C++的特性
- 如何用栈实现队列的功能
- 如何用ASP实现权限的设置?
- 如何用C++实现自己的Tensorflow
- 如何用C++实现自己的Tensorflow
- 如何用C++实现自己的Tensorflow
- 如何用C++实现自己的Tensorflow
- 如何将android源码导入eclipse
- 关于在蓝色招聘和应聘的一些经验(转)
- php 实现队列和双向队列及其用例
- 【转】Hugepage、VLM、SGA和Share memory
- webBrowser控制新窗口
- 如何用Qt实现对Google API的应用(2)-- OAuth的各步骤实现
- OS-Ucos Interrupt
- 安家CSDN价值博客
- magento - 如何给magento中的产品随机定义相关产品和交叉产品,推荐产品
- 给一个IP地址,如何划分为几个子网?
- OS-lwip
- .net 的压缩类库 (引用)
- 最近的想法
- 变量和值在内存中的存储位置