您的位置:首页 > 编程语言 > Qt开发

如何用Qt实现对Google API的应用(1)-- OAuth认证详述

2011-02-17 22:14 309 查看
对OAuth的介绍,大家可以参照http://oauth.net/documentation/getting-started/

而对于如何使用OAuth,我想,这是我们所需要关注的重点。

对于应用OAuth来说,抛开具体的协议不说,首先我们需要知道以下几个问题的答案:

1. 我们用OAuth,最终是为了得到什么 ?

A:为了或者Access token,这个token类似于cookie里面的token,我们用它来作为Authorization header里面关键的验证信息

2. Access token如何获得?

A: Access token的获得一般来说需要3 steps,也就是OAuth或者Google文档里经常提到的3-legged方式。区别于2-legged,我们可以简单的理解为,2-legged方式适用于google api的付费consumer,特别是web application,需要先在google account上注册服务。而3-legged方式,适用于第三方的非web应用,比如手机或者桌面非web方式的application。

对于Access token的获得过程,使用3-legged方式为, a.先向google request token(第一个token),b.使用a中获取的token向google account申请授权(token与a中相同),c.授权后,再用之前的token申请access token,申请时,需要授权后提供的verfier信息

3. 什么叫Signing OAuth requests?

A: 对提交的用来申请token的request进行签名,request就是使用Get方式向google提出的token请求,在Access token获取过程中(3-legged),每次都需要对request进行签名。

4. 怎样Sign OAuth request?用Qt又如何实现呢?

A: 不好意思,这里只针对非web application的签名方式进行讲解。对于非web应用的情况,采用HMAC_SHA1进行加密,需要一个key和一个base string。这两者有具体的生成方式,将在后面阐述。Qt中的QCryptographicHash有SHA1的加密方式,可以用来辅助完成这一步骤。P.S. 并不是单纯的使用QCryptographicHash就可以对字符串进行加密,还需要将key和base string根据hmac_sha1的方式先进行变换,具体的做法会在后面补上。

5. Access Token的使用时限是多久?

A: 根据Google的说法,一般Access Token的使用时限比较长,但是实际使用过程中发现,它也很容易实效。至于是否是过期,还待进一步验证。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: