使用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的必备参数,下图是我注册后的新浪和腾讯微博的截图

image

新浪微博应用截图

image

腾讯微博应用截图

2. 在获得了调用资格后我们正式开始我的微博验证之旅。首先我们先创建一个Qt的应用程序,选择File-New-Project

image

选择Qt4Project,输入项目名称“MyMicro-blog”

image

选择OK,连续选择两次Next,到以下界面,Base class:选择QDialog,Class name:输入LoginMicroblog, 选择Finish结束创建向导

image

3. 设计

由于我们想在程序中支持新浪和腾讯的微博登陆,而且除第二步执行方式不同外,第一步和第三步执行方式相同,所有首先我们定义一个接口,为了让程序有更好的结构,我们创建一个静态库来放置接口及后面的实现。

在解决方案上点击右键,选择Add-New Project…

image

选择Qt Library,并输入名字MyMicro-blogLib

image

选择OK,在下一个界面选中Create Static Library(.lib),选中Next

image

在Class name:中输入IMicroblog,点Finish

image

首先我们定义接口成下面这个样子

image

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++不支持属性,修改后成为这个样子

image

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;
};

 

不知不觉写了一下午,好累啊,下一篇咱们继续,先闪!

posted @ 2011-01-16 17:21  风雷云雪电  Views(...)  Comments(... Edit 收藏