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

    技术2026-03-30  8

     

    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中获取的tokengoogle account申请授权(tokena中相同),c.授权后,再用之前的token申请access token,申请时,需要授权后提供的verfier信息

    3. 什么叫Signing OAuth requests

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

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

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

     

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

    A: 根据Google的说法,一般Access Token的使用时限比较长,但是实际使用过程中发现,它也很容易实效。至于是否是过期,还待进一步验证。

     

     

     

    最新回复(0)