一起谈.NET技术,微博是个大金矿,使用VS2010编译QOAuth支持微博通用认证OAuth实现SINA微博登陆

简介:   随着Twitter的兴起和国内Sina和QQ等公司的追随,微博现在是如日中天,将传统的SNS给完全比拼下去,微博对于大家来说完全是个尚未完全开采的大金矿,对于一直站在潮流最前端的程序员来说怎么能将这么好的机会错失呢。

  随着Twitter的兴起和国内Sina和QQ等公司的追随,微博现在是如日中天,将传统的SNS给完全比拼下去,微博对于大家来说完全是个尚未完全开采的大金矿,对于一直站在潮流最前端的程序员来说怎么能将这么好的机会错失呢。

  在这里我抛砖引玉,先介绍下如何在Qt平台上编译QAuth来支持现在微博的通用认证OAuth,

  根据Twitter的API Wiki,基本的OAuth验证workflow如下:

  1. 程序利用http://api.twitter.com/oauth/request_token来从twitter.com那里获取一个request token。

  2. 然后程序引导用户到http://api.twitter.com/oauth/authorize页面。

  3. 用户如果同意授权,twitter.com则会显示一个7位数字的PIN码。

  4. 用户需要将PIN码复制,然后回到程序那里。

    5. 之后程序要提示用户输入得到的PIN码。

    6. 然后程序将PIN码作为参数oauth_verifier的值,接着调用http://api.twitter.com/oauth/access_token去核实PIN码,从而将request_token 换成access_token。

  7. Twitter之后会返回一个access_token,程序就此token来生成之后的OAuth签名。

  OAuth本身不是很复杂,不过如果有个库可以作为验证的helper的话,就可以省事很多了,由于最近一直在用Qt做开发,在上篇文章中我介绍了Qt并介绍了如何在VS2010中编译Qt环境,如果对Qt不熟悉的朋友可以点这里查看。顺理成章的是我希望在Qt框架下找到一个能支持OAuth的类库来简化开发,通过放狗进行搜索,搜到有个QOAuth的东西,是在Qt下的OAuth库,不过仔细一看,原来在使用QOauth之前还需要OpenssL,QCA和QCA的OpenssL插件,晕啊!

  闲话就不说了,咱们进入正题

  • openssL

  首先得到OpenssL的官网上下载OpenssL,http://www.openssl.org/,我下载的是openssl-1.0.0c.tar.gz,也是最新的,如果大家不想编译也可以到网上搜索别人编译好的库。

  下载好后解压缩到硬盘中,我的路径是 H:\openssl-1.0.0c,由于OpenssL使用Perl生成makefile,所以需要先下载Perl,我下载的ActivePerl,下载好后进行安装。

  Perl安装好后,运行Visual Studio Command Prompt (2010),不要运行普通的控制台。

  键入命令 perl Configure VC-WIN32

image

  如果输入错误会有明显提示,需要注意的是VC-W32必须是大写

  等完成后键入命令 ms\do_ms

image

  等完成后输入 nmake -f ms\ntdll.mak

image

  编译成功后生成的lib,dll等库文件在out32dll中,头文件在include中,这些目录在以后的编译中需要加入到项目头文件目录和lib包含目录中。

  • 编译支持OpenssL的Qt

  由于默认情况下Qt编译出来时不支持OpenssL的,需要重新编译下Qt,囧。

  基本步骤和我这篇文章 Qt简介以及如何配置Qt使用VS2010进行开发 中所描述的基本一致,唯一不同的在于configure的时候需要加上-openssl -I openssL头文件目录 -L openssLlib文件目录,如我的环境下是这样子滴

configure -platform win32-msvc2010 -openssl -I H:\openssl-1.0.0c\include -L H:\openssl-1.0.0c\out32dll

  • QCA

  QCA需要到这个网站http://delta.affinix.com/qca/下载,同样的这个网站提供的QCA的OpenssL插件下载

  QCA我下载的 qca-2.0.3.tar.bz2

  QCA的OpenssL插件我下载的是 qca-ossl-2.0.0-beta3.tar.bz2

  下载好后解压缩到硬盘,我的路径是 H:\qca-2.0.3,打开系统的环境变量,将QTDIR加入系统环境变量,如图所示

image

  打开VS2010,Qt菜单(如果没有这个菜单,请查看我的上一篇文章),Open Qt Project File(.pro),选择QCA的安装目录下的qca.pro,稍等一会儿,自动将PRO项目转换成VS2010项目并加载了QCA下的所有项目

image

  工程下有很多项目,我们只要编译qca项目即可,直接编译会出错,需要进行下设置,展开qca项目,在Generated Files下的debug和release目录下找到qpipe.moc文件,右键属性,显示下图界面

image

  在Command Line的最后面加上-DQ_OS_WIN,确定后,再编译,OK一切都安静了

  • QCA的Openssl插件

  下载好后解压缩到硬盘,在Visual Studio Command Prompt (2010)中进入压缩目录,我的是在H:\qca-ossl-2.0.0-beta3,执行下面命令: configwin rd

image

  新建一个文本文件,输入WINLOCAL_PREFIX = C:/local,C:/Local可以是任何你想指定的目录,这个目录是作为零时文件的存放路径,将其保存到你的Qt目录下的mkspecs\features目录中,文件名为winlocal.prf,注意不要保存成文本文件,我的保存路径是H:\Qt\2010.05\qt\mkspecs\features,供大家参考。

image

  打开VS2010,Qt菜单(如果没有这个菜单,请查看我的上一篇文章),Open Qt Project File(.pro),选择QCA的OpenSSL插件的的安装目录下的qca-ossl.pro,稍等一会儿生成了QCA的OpenSSL插件的VS项目。

  将OpenssL的头文件路径和lib文件路径添加到项目中

  在项目中搜索所有的EVP_md2,一共有4个,加上宏定义#ifndef OPENSSL_NO_MD2#endif,如图示,

image

  编译之,在lib文件夹中获取劳动成果dll和lib文件两颗,拷贝进Qt的Plugins的crypto中,如果没有这个目录,手动建立目录。在以后编译的项目中需要将这个目录拷贝到exe文件的目录中即可。

  • QOAuth

  从QOAuth的官方网站https://github.com/ayoy/qoauth下载QOAuth,

  在硬盘解压缩,我的目录是H:\ayoy-qoauth-18dbc19,通用的打开VS2010,Qt菜单(如果没有这个菜单,请查看我的上一篇文章),Open Qt Project File(.pro),选择QOAuth目录下的qoauth.pro,稍等片刻生成项目文件,在qoauth项目中的interface.h文件中点击右键,属性,如下图所示

image

  将.\GeneratedFiles\$(ConfigurationName)\加入到include目录中,

image

  编译qoauth项目,成功后在lib文件中找到dll和lib,

  编译好之后得安装。具体做法是: 将oauth.prf复制到QTDIR\mkspecs\features里面, 将include和src复制到QTDIR\include里面,src里面只需有头文件即可 将生成的dll复制到QTDIR\lib,如果编译时候提示找不到这两个dll,可能是因为这是的dll名字包含版本号,去掉就ok了。

  用了QOAuth之后,编译出来的程序需要 +OpenSSL的链接库:(如果不带上OpenSSL的话,程序仍然可以启动,QCA会显示插件不支持的,然后会中止程序,算是个小陷阱) -libeay32.dll,libssl32.dll,ssleay32.dll +QCA的链接库: -qcad2.dll +QOAuth的链接库 -qoauth1.dll/qoauthd1.dll。

目录
相关文章
|
13天前
|
人工智能 开发框架 量子技术
【专栏】.NET 技术:驱动创新的力量
【4月更文挑战第29天】.NET技术,作为微软的开发框架,以其跨平台、开源和语言多样性驱动软件创新。它在云计算、AI/ML、混合现实等领域发挥关键作用,通过Azure、ML.NET等工具促进新兴技术发展。未来,.NET将涉足量子计算、微服务和无服务器计算,持续拓宽软件开发边界,成为创新的重要推动力。掌握.NET技术,对于开发者而言,意味着握有开启创新的钥匙。
|
13天前
|
开发框架 .NET C#
【专栏】理解.NET 技术,提升开发水平
【4月更文挑战第29天】本文介绍了.NET技术的核心概念和应用,包括其跨平台能力、性能优化、现代编程语言支持及Web开发等特性。文章强调了深入学习.NET技术、关注社区动态、实践经验及学习现代编程理念对提升开发水平的重要性。通过这些,开发者能更好地利用.NET构建高效、可维护的多平台应用。
|
13天前
|
机器学习/深度学习 vr&ar 开发者
【专栏】.NET 技术:引领开发新方向
【4月更文挑战第29天】本文探讨了.NET技术如何引领软件开发新方向,主要体现在三方面:1) 作为跨平台开发的先锋,.NET Core支持多操作系统和移动设备,借助.NET MAUI创建统一UI,适应物联网需求;2) 提升性能和开发者生产力,采用先进技术和优化策略,同时更新C#语言特性,提高代码效率和可维护性;3) 支持现代化应用架构,包括微服务、容器化,集成Kubernetes和ASP.NET Core,保障安全性。此外,.NET还不断探索AI、ML和AR/VR技术,为软件开发带来更多创新可能。
|
13天前
|
开发框架 Cloud Native 开发者
【专栏】剖析.NET 技术的核心竞争力
【4月更文挑战第29天】本文探讨了.NET框架在软件开发中的核心竞争力:1) .NET Core实现跨平台与云原生技术的融合,支持多操作系统和容器化;2) 提升性能和开发者生产力,采用JIT、AOT优化,提供C#新特性和Roslyn编译器平台;3) 支持现代化应用架构,包括微服务和容器化,内置安全机制;4) 丰富的生态系统和社区支持,拥有庞大的开发者社区和微软的持续投入。这些优势使.NET在竞争激烈的市场中保持领先地位。
|
13天前
|
开发框架 .NET 开发者
【专栏】领略.NET 技术的创新力量
【4月更文挑战第29天】.NET技术自ASP.NET起历经创新,现以.NET Core为核心,展现跨平台能力,提升性能与生产力,支持现代化应用架构。.NET Core使开发者能用同一代码库在不同操作系统上构建应用,扩展至移动和物联网领域。性能提升,C#新特性简化编程,Roslyn编译器优化代码。拥抱微服务、容器化,内置安全机制,支持OAuth等标准。未来.NET 6将引入更快性能、Hot Reload等功能,预示着.NET将持续引领软件开发潮流,为开发者创造更多机会。
|
13天前
|
物联网 vr&ar 开发者
【专栏】.NET 技术:为开发注入活力
【4月更文挑战第29天】本文探讨了.NET技术的创新,主要体现在三个方面:1) .NET Core实现跨平台开发革命,支持多种操作系统和硬件,如.NET MAUI用于多平台UI;2) 性能提升与生产力飞跃,C#新特性简化编程,JIT和AOT优化提升性能,Roslyn提供代码分析工具;3) 引领现代化应用架构,支持微服务、容器化,内置安全机制。未来,.NET 7将带来更多新特性和前沿技术整合,如量子计算、AI,持续推动软件开发创新。开发者掌握.NET技术将赢得竞争优势。
|
13天前
|
人工智能 前端开发 Cloud Native
【专栏】洞察.NET 技术的开发趋势
【4月更文挑战第29天】本文探讨了.NET技术的三大发展趋势:1) 跨平台与云原生技术融合,通过.NET Core支持轻量级、高性能应用,适应云计算和微服务;2) 人工智能与机器学习的集成,如ML.NET框架,使开发者能用C#构建AI模型;3) 引入现代化前端开发技术,如Blazor,实现前后端一致性。随着.NET 8等新版本的发布,期待更多创新技术如量子计算、AR/VR的融合,.NET将持续推动软件开发的创新与进步。
|
4月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
46 0
|
17天前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
22 0
|
2月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
32 0