使用QOAuth来进行新浪/腾讯微博验证(一)
在上篇文章Qt简介以及如何配置Qt使用VS2010进行开发以及微博是个大金矿,使用VS2010编译QOAuth支持微博通用认证OAuth实现SINA微博登陆中向大家介绍了如何编译Qt及QOauth,在这篇文章中我会用实例的方式来介绍如何使用QOAuth来通过新浪或者腾讯微博验证。
由于边写代码别写博文,进度会比较慢,会以多篇文档的方式来完成整个文章。由于OAuth基本上分为3个部分
- requestToken
- 各个网站自定义验证
- accessToken
这篇文章作为该系列的第一篇,主要介绍下如何完成Api的申请和项目的搭建以及接口的部分设计。
1. 为了创建新浪/腾讯微博的应用程序,首先要注册成为开发者。
新浪API的注册地址: http://open.t.sina.com.cn/
腾讯API的注册地址:http://open.t.qq.com/
进行注册之后会获得App Key和App Secret:这个是OAuth验证用来通过requestToken的必备参数,下图是我注册后的新浪和腾讯微博的截图
新浪微博应用截图
腾讯微博应用截图
2. 在获得了调用资格后我们正式开始我的微博验证之旅。首先我们先创建一个Qt的应用程序,选择File-New-Project
选择Qt4Project,输入项目名称“MyMicro-blog”
选择OK,连续选择两次Next,到以下界面,Base class:选择QDialog,Class name:输入LoginMicroblog, 选择Finish结束创建向导
3. 设计
由于我们想在程序中支持新浪和腾讯的微博登陆,而且除第二步执行方式不同外,第一步和第三步执行方式相同,所有首先我们定义一个接口,为了让程序有更好的结构,我们创建一个静态库来放置接口及后面的实现。
在解决方案上点击右键,选择Add-New Project…
选择Qt Library,并输入名字MyMicro-blogLib
选择OK,在下一个界面选中Create Static Library(.lib),选中Next
在Class name:中输入IMicroblog,点Finish
首先我们定义接口成下面这个样子
virtual bool requestToken(); virtual bool customAouth(const QString & userName,const QString & password) = 0; virtual bool accessToken(); virtual int error() const;
可以看到前三个函数对于OAuth认证的三个通用方法,都是bool型的,最后面是一个error函数,如果认证出错返回具体出错代码
下一步就要定义属性了,从前面知道我们需要知道App Key和App Secret这两个属性,由于这两个属性是可修改的,该属性是可读可写
经过进一步查看OAuth的实现,我们可以看到在requestToken后,服务器会返回oauth_token和oauth_token_secret两个参数,这两个参数在后面有大用处,所以需要增加这两个属性,由于这两个属性是服务器给的,所以只要只读就可以了
由于C++不支持属性,修改后成为这个样子
class IMicroblog { public: virtual bool requestToken(); virtual bool customAouth(const QString & userName,const QString & password) = 0; virtual bool accessToken(); virtual int error() const; QString appKey() const; void setAppKey(const QString & appkey); QString appSecret() const; void setAppSecret(const QString & appsecret); QString oauthToken() const; QString oauthTokenSecret() const; protected: QString _appKey; QString _appSecret; QString _oauthToken; QString _oauthTokenSecret; };
不知不觉写了一下午,好累啊,下一篇咱们继续,先闪!