1、毕业设计(论文)题目腾讯微博客户端的设计与实现专业计算机科学与技术(软件工程)院(系)信息工程学院完成时间2012年05月15日毕业设计(论文)任务书附表一题目来源探索学习课题名称腾讯微博客户端的设计与实现设计人姓名指导教师姓名、职称专业计算机科学与技术(软件工程)指导时间/地点班级一、设计(论文)内容这次设计的主要内容是开发一个腾讯微博的PC客户端,通过使用腾讯微博开放平台提供的API函数以及开发文档,在VS2010平台下使用MFC具有图形界面的客户端,其主要功能有,通过用户的授权认证,获得用户的相关信息,用户发表新的微博,获得用户的相关微博,并对此微博进行评论,和收藏等。二、设计(论文)的
2、主要技术指标1、能够正确的通过腾讯微博的认证,正确地获取用户的信息。2、能够正确显示微博信息,不出现错字和乱码。3、不仅要获取微博,还能获取微博配备的相关图片。三、进度安排1、熟悉编程语言VS2010的编程平台;2、熟悉腾讯微博API的相关用法;3、编写软件详细设计报告;4、实施开发过程;5、调试软件。四、毕业设计(论文)提交的文档及基本要求1毕业论文一份(包含封皮、目录、中英文摘要、内容及参考文献)2不少于5000汉字的科技翻译资料一份3、毕业论文简介(A4纸12页)(包含题目、专业、年级、姓名、指导教师、毕业论文所做的工作、解决的问题、创新之处等)4毕业设计任务书5开题报告6毕业设计工作中
3、期检查表毕业设计(论文)开题报告附表二课题名称腾讯微博客户端的设计与实现学生姓名学号专业班级一、选题的目的意义微博,即微博客(MICROBLOG)的简称,是一个基于用户关系的信息分享、传播以及获取平台,用户可以通过WEB、WAP以及各种客户端组件个人社区,以140字左右的文字更新信息,并实现即时分享。微博客草根性更强,且广泛分布在桌面、浏览器、移动终端等多个平台上,有多种商业模式并存,或形成多个垂直细分领域的可能,但无论哪种商业模式,都离不开用户体验的特性和基本功能。在微博客上,140字的限制将平民和莎士比亚拉到了同一水平线上,这一点导致大量原创内容爆发性地被生产出来。二、国内外发展综述TWI
4、TTER是2006年3月由BLOGGER的创始人威廉姆斯EVANWILLIAMS推出的,英文原意为小鸟的叽叽喳喳声,用户能用如发手机短信的数百种工具更新信息。TWITTER的出现把世人的眼光引入了一个叫微博的小小世界里。2007年中国第一家带有微博色彩的饭否网开张,直到2010年国内微博迎来来春天,微博像雨后春笋般崛起,2011年上半年,我国微博用户数量从6331万增至195亿,半年增幅高达2089。微博在网民中的普及率从138增至402。从2010年底至今,手机微博在网民中的使用率比例从155上升到34。由此可见,微博已经与我们的生活紧密的联系起来,越来越多的普通民众能够通过微博发出自己的声
5、音使得被社会关注。在一些大的突发事件或引起全球关注的大事,如果有微博客在场,利用各种手段在微博客上发表出来,其实时性、现场感以及快捷性,甚至超过所有媒体。在我国,网民使用的微博平台主要以新浪微博和腾讯微博为主。TQQCOM腾讯微博WEIBOCOM新浪微博TWITTERCOM/推特网三、毕业设计(论文)所用的方法系统设计基于C/S架构利用MICROSOFT的VS2010开发工具,开发出带有图形界面的客户端软件,其中利用腾讯微博提供的API,将微博中的内容抓取到本地客户端,然后将内容显示出来。四、主要参考文献与资料获得情况腾讯微博开放平台HTTP/DEVOPENTQQCOM精通MFC程序设计(人民
6、邮电出版社)VC深入详解(电子工业出版社)五、指导教师审批意见签字年月日毕业设计工作中期检查附表三2012年4月2日课题名称腾讯微博客户端的设计与实现姓名专业和班级指导教师一、毕业设计具体内容、目标和可能遇到的问题具体内容及目标(1)通过腾讯微博开放平台提供的API完成对用户登录的认证。(2)熟悉腾讯微博提供的API,了解微博的基本开发过程。(3)利用微博API完成对用户相关信息的抓取。可能遇到的问题(1)对腾讯微博API相关概念的理解以及相关开发的技术的掌握。(2)对VC相关控件的使用二、采取的研究方法、技术路线、实验方案及可行性分析研究方法及技术路线(1)查阅腾讯微博开放平台提供的帮助文档
7、。(2)通过OAUTH认证的相关文章,理解此认证的原理方法。可行性分析虽然微博在国内十分流行,但都是基于网页版的,客户端软件基本没有,而客户端与网页相比,有速度快和界面友好的优势,所以开发一个优秀的客户端具有十分重要的意义。三、指导教师对学生出勤、文献阅读等方面的评语签字年月日毕业设计工作中期检查附表四2012年5月3日课题名称腾讯微博客户端的设计与实现姓名专业和班级计算机科学与技术(软件工程)08级4班指导教师一、阶段性结果实现了客户端获取用户的授权,登陆到用户的账号,获取用户的相关信息。完成了对用户微博信息的抓取,用户可以利用客户端发表新的微博,对微博进行评论、收藏。二、存在的问题受限于V
8、C提供的控件,无法提供较好的用户体验。微博信息显示方式的改变导致变量的冗余,浪费内存。三、后一步工作设想进一步加强客户端的各个功能,完善各个功能模块。对代码进行优化,减少无用的变量,完善用户界面,使客户端操作更加简单便捷。四、指导教师对学生出勤、论文进展方面的评语签字年月日腾讯微博客户端的设计与实现摘要微博,即微博客(MICROBLOG)的简称,是一个基于用户关系的信息分享、传播以及获取平台,用户可以通过WEB、WAP以及各种客户端组建个人社区,以140字左右的文字更新信息,并实现即时分享。微博集成了手机短信、博客与社交网站的优点,将消费者从原来单纯的信息接收者变成了接收和发布信息的完全参与者
9、,从而让社会走进了全民记者时代。此客户端是在VS2010平台下利用微软的MFC(微软基础类库)进行开发的,通过调用腾讯微博开放平台提供的API接口,获得腾讯微博用户的相关信息。通过此客户端,用户可以获得自己的信息,发表新微博,查看自己收听用户的微博,并进行评论与收藏。在界面方面,使用的是MFC提供的控件。通过对控件的功能的完善,可以使用户更加方便的使用客户单完成微博的一些基本操作。关键词微博,腾讯,MFC,API接口DESIGNANDIMPLEMENTATIONOFTENCENTMICROBLOGCLIENTABSTACTMICROBLOGMICROBLOG,REFERREDTOASMICRO
10、BLOGGING,ISARELATIONSHIPBASEDONUSERINFORMATIONSHARING,DISSEMINATIONANDACCESSTOTHEPLATFORM,USERSCANSETUPINDIVIDUALCOMMUNITIES,THROUGHTHEWEBASWELLASAVARIETYOFCLIENTSTOUPDATETHEINFORMATIONINABOUT140WORDSOFTEXT,ANDTOACHIEVEINSTANTSHARINGTHEMICROBLOGGINGINTEGRATESTHEADVANTAGESOFMOBILEPHONETEXTMESSAGES,BL
11、OGANDSOCIALNETWORKINGSITES,CONSUMERSFROMTHEORIGINALSIMPLEINFORMATIONRECEIVERTOBECOMEAFULLPARTICIPANTTORECEIVEANDPUBLISHINFORMATION,SOTHATTHESOCIETYENTEREDTHEERAOFUNIVERSALREPORTERTHISCLIENTISDEVELOPEDBYUSINGMICROSOFTSMFCMICROSOFTFOUNDATIONCLASSLIBRARYINVS2010PLATFORMBYCALLINGTENCENTMICROBLOGGINGOPEN
12、INGPLATFORMAPIINTERFACEGETTENCENTMICROBLOGGINGUSERSINFORMATIONTHROUGHTHISCLIENT,USERSCANACCESSTHEIROWNINFORMATION,THENEWMICROBLOGGING,CHECKTHEMICROBLOGGINGOFUSERSTHATTHEYARELISTENINGANDREVIEWSANDCOLLECTIONATTHEINTERFACE,USINGMFCCONTROLSPERFECTCONTROLFUNCTIONALLOWSUSERSTOMOREEASILYUSETHECUSTOMERASING
13、LETOCOMPLETESOMEOFTHEBASICOPERATIONOFMICROBLOGGINGKEYWORDSMICROBLOG,TENCENT,MFC,APIINTERFACE目录一、绪论111引言112微博的定义与特点1121微博的定义1122微博的特点213国内外研究发展综述2131国外发展综述2132国内发展综述3二、系统开发环境简介521系统开发软件环境5211VISUALSTUDIONET2010简介5212腾讯微博开放平台522系统开发硬件环境6三、软件需求分析与总体设计731系统需求分析7311功能需求7312稳定性需求7313其它需求732微博客户端设计概要833微博客
14、户端认证机制8331腾讯微博APIOAUTH认证介绍8332OAUTH认证机制介绍9333OAUTH认证机制的运行过程934微博客户端信息抓取流程10341CWEIBOPARAM参数类及微博相关参数简介11342信息传递函数SYNCREQUEST)简介1135对返回值的解析13351JSON格式简介13352腾讯微博API对JSON格式的解析14353XML格式简介15354腾讯微博API对XML格式的解析1636字符串格式的转换16361UNICODE字符集与多字节字符集的区别16362CHAR、STRING和CSTRING的转换17四、软件详细设计与实现1841相关变量的定义1842相关图
15、片的获取和显示1943用户登录的设计与实现2044用户信息模块的设计与实现2145微博相关操作模块的设计与实现2346微博发布和评论模块的设计与实现25五、开发总结26致谢27参考文献28郑州大学信息工程学院软件学院2008级毕业设计1一、绪论11引言微博,即微博客(MICROBLOG)的简称,是一个基于用户关系的信息分享、传播以及获取平台,用户可以通过WEB、WAP以及各种客户端组建个人社区,以140字左右的文字更新信息,并实现即时分享。近3年来,互联网上4种主要的社交媒体SOCIALMEDIA微博、社交网站、视频分享网站和开放式百科全书从根本上改变了人类的生活。人类正以前所未有的速度和广度
16、传递信息,以计算机为媒介的沟通成为人们互动沟通的重要方式。在这4种媒体中,微博后来居上。国外最早提供微博服务的网站是美国的TWITTER,从2006年10月开通至2011年1月在全球已拥有近2亿注册用户,年增长率约1500,每日访问量约30亿国内的新浪微博和腾讯微博均在开通不到一年半的时间内突破1亿用户。微博集成了手机短信、博客与社交网站的优点,将消费者从原来单纯的信息接收者变成了接收和发布信息的完全参与者,从而让社会走进了全民记者时代。2010年我国最大的50起网络舆情案例中约1/4是微博发起的,微博已成为企业和网民互动沟通的新平台。12微博的定义与特点121微博的定义国内知名新媒体领域研究
17、学者陈永东在国内率先给出了微博的定义微博是一种通过关注机制分享简短实时信息的广播式的社交网络平台。其中有五方面的理解1关注机制可单向可双向2简短容通常为140字3实时信息最新实时信息4广播式公开的信息,谁都可以浏览5社交网络平台把微博归为社交网络郑州大学信息工程学院软件学院2008级毕业设计2122微博的特点微博客草根性更强,且广泛分布在桌面、浏览器、移动终端等多个平台上,有多种商业模式并存,或形成多个垂直细分领域的可能,但无论哪种商业模式,都离不开用户体验的特性和基本功能。1信息获取具有很强的自主性、选择性,用户可以根据自己的兴趣偏好,依据对方发布内容的类别与质量,来选择是否“关注”某用户,
18、并可以对所有“关注”的用户群进行分类;2微博宣传的影响力具有很大弹性,与内容质量高度相关。其影响力基于用户现有的被“关注”的数量。用户发布信息的吸引力、新闻性越强,对该用户感兴趣、关注该用户的人数也越多,影响力越大。此外,微博平台本身的认证及推荐亦助于增加被“关注”的数量;3内容短小精悍。微博的内容限定为140字左右,内容简短,不需长篇大论,门槛较低;4信息共享便捷迅速。可以通过各种连接网络的平台,在任何时间、任何地点即时发布信息,其信息发布速度超过传统纸媒及网络媒体。13国内外研究发展综述131国外发展综述2006年3月,博客技术先驱BLOGGER创始人埃文威廉姆斯EVANWILLIAMS创
19、建的新兴公司OBVIOUS推出了大微博服务。在最初阶段,这项服务只是用于向好友的手机发送文本信息。TWITTER是2006年3月由BLOGGER的创始人威廉姆斯EVANWILLIAMS推出的,英文原意为小鸟的叽叽喳喳声,用户能用如发手机短信的数百种工具更新信息。TWITTER的出现把世人的眼光引入了一个叫微博的小小世界里。TWITTER是一个社交网络及微博客服务。用户可以经由SMS、即时通信、电邮、TWITTER网站或TWITTER客户端软件如TWITTERRIFIC输入最多140字的文字更新,TWITTER被ALEXA网页流量统计评定为最受欢迎的50个网络应用之一。在2007年5月,国际间计
20、算总共有111个类似TWITTER的网站。然而,最值得注意的仍是TWITTER,它于2007年在得克萨斯州奥斯汀举办的南非西南会议赢得了部落格类的网站奖。TWITTER的主要竞争对手是PLURK和JAIKU。后来微博客的新服务特色持续诞生,例如PLURK有时间轴可以观看整合了视讯和照片的分享,IDENTI、POWNCE整合了微薄客加上档案分享和事件邀请,由DIGG的创始人KEVINROSE和另外三位开发者共同发展。郑州大学信息工程学院软件学院2008级毕业设计3132国内发展综述从2007年中国第一家带有微博色彩的饭否网开张,到2009年,微博这个全新的名词,以摧枯拉朽的姿态扫荡世界,打败奥巴
21、马、甲流等等名词,成为全世界最流行的词汇。伴随而来的,是一场微博世界人气的争夺战,大批量的名人图11新浪微博被各大网站招揽,各路名人也以微博为平台,在网络世界里聚集人气,同样,新的传播工具也造就了无数的草根英雄,从默默无闻到新的话语传播者,往往只在一夜之间、寥寥数语。2009年7月中旬开始,国内大批老牌微博产品饭否、腾讯滔滔等停止运营,一些新产品开始进入人们的视野,像开放的叽歪,6月份开放的FOLLOW5,7月份开放的9911,8月份开放的新浪微博,其中FOLLOW5在2009年7月19日孙楠大连演唱会上的亮相,是国内第一次将微博引入大型演艺活动,与TWITTER当年的发展颇有几分神似。201
22、0年国内微博迎来来春天,微博像雨后春笋般崛起。四大门户网站均开设微博。根据相关公开数据,截至2010年1月份,该产品在全球已经拥有7500万注册用户。中国互联网络信息中心(CNNIC)今日发布第28次中国互联网络发展状况统计报告,报告显示,2011年上半年,中国微博用户从6331万增至195亿,增长约2倍。该报告指出,中国互联网的普及率增至362,较2010年增加19。2011年上半年,我国微博用户数量从6331万增至195亿,半年增幅高达2089。微博在网民中的普及率从138增至402。从2010年底至今,手机微博在网民中的使用率比例从155上升到34。图12腾讯微博至今,新浪微博用户数超过
23、1亿,得益于抢占了先机,而且在整体的战略执郑州大学信息工程学院软件学院2008级毕业设计4行上也比较彻底到位,所以获得了现在的地位。仅仅两年时间,新浪微博就为新浪生下了一个价值几十亿美金的金蛋。而另一个微博巨头腾讯微博,也呈现出发展迅猛的姿态,腾讯拥有近5亿的QQ注册用户,2亿左右的活跃用户。这部分人群很容易受潮流趋势的影响,开通腾讯微博。通过腾讯微博能够与QQ好友和腾讯微博上的其他用户行行信息的分享。另外其作为重要的推广渠道。企业用户通过注册腾讯官方微博,得到认证后,能够迅速的扩大企业的知名度。个人用户通过腾讯微博,也能再微博平台进行个人的推广。目前,很多的社会事件揭露都来自于微博平台。高校
24、教育平台也随之建立,如腾讯微博校园上的高校新闻哥微博体系的发展,推动了中国教育事业信息化发展的步伐。郑州大学信息工程学院软件学院2008级毕业设计5二、系统开发环境简介21系统开发软件环境211VISUALSTUDIONET2010简介VISUALSTUDIO是微软公司出品的一款大型应用软件,从最初的VISUALSTUDIO97开始就成为编程的重要工具。VISUALSTUDIONET是一套完整的开发工具,用于生成ASPWEB应用程序、XMLWEBSERVICES、桌面应用程序和移动应用程序。VISUALBASICNET、VISUALCNET、VISUALCNET和VISUALJNET全都使用相
25、同的集成开发环境IDE,该环境允许它们共享工具并有助于创建混合语言解决方案。另外,这些语言利用了NETFRAMEWORK的功能,此框架提供对简化ASPWEB应用程序和XMLWEBSERVICES开发的关键技术的访问。VISUALSTUDIO2010版本于2010年4月12日上市,其集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。VISUALSTUDIO201O同时带来了NETFRAMEWORK40,MICROSOFTVISUALSTUDIO2010CTPCOMMUNITYTECHNOLOGYPREVIEWCTP并且支持开发面向WINDOWS7的应用程序。除了MICROSOFTS
26、QLSERVER,它还支持IBMDB2和ORACLE数据库。VISUALSTUDIO2010的新增功能集中在以下几个方面1支持WINDOWSAZURE,微软云计算架构迈入重要里程碑。2助力移动与嵌入式装置开发,三屏一云商机无限。3实践当前最热门的AGILE/SCRUM开发方法,强化团队竞争力。4升级的软件测试功能及工具,为软件质量严格把关。5搭配WINDOWS7,SILVERLIGHT4与OFFICE,发挥多核并行运算威力,创建美感与效能并重的新一代软件。6支持最新C标准,增强IDE,切实提高程序员开发效率。212腾讯微博开放平台腾讯微博开放平台,是基于腾讯微博系统,为广大开发者和用户提供的开
27、放数据分享与传播平台。广大开发者和用户登录平台后,就可以使用平台提供的开放API接口,创建应用从微博系统获取信息,或将新的信息传播到整个微博系统中,丰富多样的API接口和应用,加上你的智慧,将创造出无穷的应用和乐趣1平台介绍在微博开放平台能获取到的资源及优势郑州大学信息工程学院软件学院2008级毕业设计62应用开发说明说明如何成为一个开发者并创建应用3应用审核流程审核应用的来源字段能获得的好处,以及如何审核4开发者协议在此查看腾讯微博开放平台开发者服务协议22系统开发硬件环境硬件配置如下操作系统WINDOWS7操作系统CPUINTEL(R)CORE(TM)DUOCPUT6600220GHZ内存
28、5GB显卡NVIDIAGEFORCEGT130M郑州大学信息工程学院软件学院2008级毕业设计7三、软件需求分析与总体设计31系统需求分析311功能需求微博作为现在人们生活中必不可少的工具,通过微博这个媒介,发布身边的新鲜事,并且能对某一热门话题进行评论,必要的时候还可收藏自己喜欢的文字。可以说文博极大地丰富了我们的生活。所以说,一个微博客户端系统,一定要包含如下的基本功能,来发挥微博的作用1用户登录自己的账户并查看自己的个人信息。通过OAUTH认证方式,用户可以在不告知客户端自己的账号和密码的情况下,安全的通过客户端登陆腾讯微博,并且获取自己的相关信息。2用户查看自己的新微博,获取好友的最新
29、动态。用户可以查看自己关注对象的微博,并能够通过随时刷新获得最新的微博动态。并且,用户不仅能看到微博的文字内容,还能看到微博的相关配图。3用户发表新微博,告诉好友自己身边的新鲜事。用户可以发表新的微博,随时更新自己的状态。4用户对好友的微博进行评论,并且对自己喜爱的微博进行收藏。用户可以对看到的微博进行评论,发表自己的意见,当用户看到感兴趣的微博时,还收藏此微博。312稳定性需求1客户端能够长时间的正确运行,如果客户端出错,客户端会有相应的出错信息,能够使用户明白在哪里出错了,该怎么办。2减少无用的代码,减少因此带来的错误,并使客户端能够尽可能快的对数据进行处理313其它需求1为保证客户端的正
30、常运行,应保证计算机能够一直连接互联网以获取信息。2使用图形化界面,可使用鼠标或键盘作为标准输入设备。郑州大学信息工程学院软件学院2008级毕业设计832微博客户端设计概要微博客户端运行主要分为两个阶段,第一阶段认证阶段,第二阶段信息获取阶段。用户首先通过客户端打开的腾讯微博授权界面获得授权码,然后将获得授权码交付给客户端从而完成认证阶段。客户端通过获得认证码作为用户授权的依据,从而通过腾讯微博提供的API获得用户相关的微博信息。认证输入账户相关信息阶段返回授权码信息通过授权信息获取阶段返回用户微博的相关信息图31客户端运行流程33微博客户端认证机制331腾讯微博APIOAUTH认证介绍腾讯微
31、博开放平台,是基于腾讯微博系统,为广大开发者和用户提供的开放数据分享与传播平台。广大开发者和用户登录平台后,就可以使用平台提供的开放API接口,创建应用从微博系统获取信息,或将新的信息传播到整个微博系统中,丰富多样的API接口和应用,加上您的智慧,将创造出无穷的应用和乐趣。腾讯微博API采用OAUTH协议为第三方提供接入服务,遵循RFC5849规范。有关OAUTH认证的详细说明,请阅读官方OAUTH规范。各种语言的OAUTH客户端可以在GOOGLEOAUTH项目里找到。腾讯微博API使用OAUTH10A版本。用户授权页面客户端腾讯微博服务器郑州大学信息工程学院软件学院2008级毕业设计9332
32、OAUTH认证机制介绍OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。同时,任何第三方都可以使用OAUTH认证服务,任何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP、JAVASCRIPT,JAVA,RUBY等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。目前互联网很多服务如OPENAPI,很多大公司如GOOGLE
33、,YAHOO,MICROSOFT等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权的标准。OAUTH认证具有以下特点1简单不管是OAUTH服务提供者还是应用开发者,都很容易于理解与使用。2安全没有涉及到用户密钥等信息,更安全更灵活。3开放任何服务提供商都可以实现OAUTH,任何软件开发商都可以使用OAUTH。333OAUTH认证机制的运行过程1使用者(第三方软件)向OAUTH服务提供商请求未授权的REQUESTTOKEN。向REQUESTTOKENURL发起请求,请求需要带上的参数见上图。2OAUTH服务提供商同意使用者的请求,并向其颁发未经用户授权的OAUTH_T
34、OKEN与对应的OAUTH_TOKEN_SECRET,并返回给使用者。3使用者向OAUTH服务提供商请求用户授权的REQUESTTOKEN。向USERAUTHORIZATIONURL发起请求,请求带上上步拿到的未授权的TOKEN与其密钥。4OAUTH服务提供商将引导用户授权。该过程可能会提示用户,你想将哪些受保护的资源授权给该应用。此步可能会返回授权的REQUESTTOKEN也可能不返回。如YAHOOOAUTH就不会返回任何信息给使用者。5REQUESTTOKEN授权后,使用者将向ACCESSTOKENURL发起请求,将上步授权的REQUESTTOKEN换取成ACCESSTOKEN。请求的参数
35、见上图,这个比第一步A多了一个参数就是REQUESTTOKEN。6OAUTH服务提供商同意使用者的请求,并向其颁发ACCESSTOKEN与郑州大学信息工程学院软件学院2008级毕业设计10对应的密钥,并返回给使用者。7使用者以后就可以使用上步返回的ACCESSTOKEN访问用户授权的资源。从上面的步骤可以看出,用户始终没有将其用户名与密码等信息提供给使用者(第三方软件),从而更安全。用OAUTH实现背景一节中的典型案例当服务B(打印服务)要访问用户的服务A(图片服务)时,通过OAUTH机制,服务B向服务A请求未经用户授权的REQUESTTOKEN后,服务A将引导用户在服务A的网站上登录,并询问
36、用户是否将图片服务授权给服务B。用户同意后,服务B就可以访问用户在服务A上的图片服务。整个过程服务B没有有触及到用户在服务A的帐号信息。图32腾讯微博OAUTH授权认证过程34微博客户端信息抓取流程腾讯微博的信息抓取是利用腾讯公司提供的API接口,添加上相应的参数,把信息传递给腾讯公司服务器,腾讯公司再把所要求的信息传递给本地,从而完成微博的信息传递过程。郑州大学信息工程学院软件学院2008级毕业设计11请求函数SYNCREQUEST信息返回给客户端图33SYNCREQUEST函数341CWEIBOPARAM参数类及微博相关参数简介在每次向腾讯微博服务器请求用户数据时,都要都要将用户想要进行的
37、操作以参数的形式传递给腾讯微博服务器,然后腾讯服务器将用户请求返回给客户端。在腾讯公司提供的API中,参数类型是CWEIBOPARAM类,通过该类提供的函数ADDPARAMCONSTCHARPKEY,CONSTCHARPVALUE,将参数名和参数值传递到其类对象中。并且该类还提供CLEAR函数,用来清除该类对象里的所有参数,以方便此类对象可以重复利用。由于腾讯微博API采用的是OAUTH签权认证方式,所以客户端在每次请求用户数据时,都要将用户登录时留下的TOKENKEY,TOKENSECRET授权信息及开发者的身份信息APPKEY,APPSECRET传递进去,以获得获取用户信息的权限。除此之外
38、,客户端还要将用户进行相应操作所需要的相关信息添加到该参数类中。例如,若用户想要获取一条微博数据,就要将该微博的身份标示ID已经想要服务器返回的信息格式FORMAT传到CWEIBOPARAM参数类对象中CWEIBOPARAM/定义类对象OPARAMADDPARAM“APPKEY“,STRAPPKEYC_STROPARAMADDPARAM“APPSECRET“,STRAPPSECRETC_STROPARAMADDPARAM“TOKENKEY“,STRTOKENKEYC_STROPARAMADDPARAM“TOKENSECRET“,STRTOKENSECRETC_STR/传递授权信息OPARAMS
39、ADDPARAM“FORMAT“,“JSON“OPARAMSADDPARAM“ID“,WBID/传递将要获取的微博相关信息342信息传递函数SYNCREQUEST)简介SYNCREQUEST)函数是腾讯微博API函数核心,通过这个函数,客户端将含有授权信息及请求信息的相关参数OPARAM腾讯微博服务器郑州大学信息工程学院软件学院2008级毕业设计12用户将要进行的操作,以及此操作需要的相关参数传递给腾讯微博服务器,并且把从服务器传递回来的相关数据存储到某一参数中。SYNCREQUEST)函数的定义如下SYNCREQUESTCONSTCHARPREQURL,EHTTPMETHODEHTTPMET
40、HOD,CWEIBOPARAMOQWBLOGPARAM,CHAR下面就来对此函数中的参数进行说明1其中PREQURL参数的传递内容是一个URL链接,该URL链接对应的含义就是用户想要进行的操作,通过这个URL链接,客户端就会告诉腾讯微博服务器用户想要进行什么样的操作。例如URL“HTTP/OPENTQQCOM/API/T/SHOW“,就是告诉腾讯微博服务器想要获取该用户的一条微博。2SYNCREQUEST函数中第二个参数EHTTPMETHOD是一个枚举类型的参数其定义如下ENUMEHTTPMETHODEHTTPMETHOD_GET,EHTTPMETHOD_POST,其中EHTTPMETHOD_
41、GET代表的是获取信息,是要告诉服务器此次操作是想从服务器中获取相关的信息,比如说获取微博,用户信息等;而EHTTPMETHOD_POST代表的是向服务器推送信息,告诉服务器我这里有信息需要让服务器更新,比如说用户发新微博,对某一微博进行评论等,都需要用此参数。4OQWBLOGPARAM就是CWEIBOPARAM参数类对象,用来传递与URL相对应的操作所需要的参数信息。5PRESULTDATA和NLEN的作用是存储从服务器返回的信息,以方便将来对信息进行解析。6SYNCREQUEST的返回值是一个枚举类型的变量,通过SYNCREQUEST函数的返回值,可以知道客户端的请求是否成功,或者如果失败
42、了,是是失败在什么地方。例如若返回值为HTTPRESULT_OK,表明返回成功,若返HTTPRESULT_ERROR,则表明HTTP请求的数据错误导致客户端操作失败。以上就是SYNCREQUEST函数的所有参数的含义,通过此函数并添加上相应的参数,客户端就能从腾讯服务器中获取或推送消息,从而完成微博客户端最核心的内容。郑州大学信息工程学院软件学院2008级毕业设计1335对返回值的解析当客户端使用SYNCREQUEST函数从腾讯服务器请求数据后,服务器会返回给客户端一个字符串,这个字符串会根据我们请求数据时填写的参数类型返回不同格式的字符串,主要分为两种,JSON格式和XML格式,通过对这两种
43、格式的解析,我们就能获得我们想要的相关数据。351JSON格式简介JSONJAVASCRIPTOBJECTNOTATION是一种轻量级的数据交换格式。它基于JAVASCRIPT(STANDARDECMA2623RDEDITIONDECEMBER1999)的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,C,C,JAVA,JAVASCRIPT,PERL,PYTHON等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。JSON建构有两种结构1“名称/值”对的集合(ACOLLECTIONOFNAME/VALUEPAI
44、RS)。不同的语言中,它被理解为对象(OBJECT),记录(RECORD),结构(STRUCT),字典(DICTIONARY),哈希表(HASHTABLE),有键列表(KEYEDLIST),或者关联数组(ASSOCIATIVEARRAY)。2值的有序列表(ANORDEREDLISTOFVALUES)。在大部分语言中,它被理解为数组(ARRAY)。例如NAME“中国“,PROVINCENAME“黑龙江“,CITIESCITY“哈尔滨“,“大庆“,NAME“广东“,CITIESCITY“广州“,“深圳“,“珠海“郑州大学信息工程学院软件学院2008级毕业设计14,其中NAME和”中国”就是对应的名
45、称和键值,而PROVINCE是一个数组结构,它的里面包含了几组类型相似的结构,如上例的NAME”黑龙江”和NAME”广东”就是两个相似结构结构里代表相同涵义的对象。352腾讯微博API对JSON格式的解析在腾讯提供的API中使用JSONPARSER类对返回的字符串进行JSON格式的解析,一般情况下分为以下三步1通过JSONPARSER类提供的PARSE函数,将返回的字符串转换成JSON字符串,例如JSONPARSERTHEGWPARSER/定义JSONPARSER类对象THEGWPARSERPARSESTRGWRESULTC_STR;/完成字符串的转换这样就把返回值STRGWRESULT转换成
46、了JSON字符串格式。2通过JSONPARSER类提供的GETCHILDCONSTCHARPNAME函数,获得第一步中得到的JSON字符串的子节点,如果需要获得的内容是该子节点中的子节点,则可以继续使用GETCHILDCONSTCHARPNAME函数以后的自己需要的关键字;如果获得的子节点中是数组格式,则可以使用GETCHILDCONSTCHARPNAME函数的重载函数GETCHILDCONSTINTNINDEX获得相应的数组序列内容,再使用GETCHILDCONSTCHARPNAME函数获得数组内容中关键字。GETCHILD函数的返回值依旧是JSONPARSER类型的字符串。例如若JSON字
47、符串里面不含数组JSONPARSERNAMETHEGWPARSERGETCHILD“NAME“/找到关键字NAME若JSON字符串里面含数组JSONPARSERINFOTHEGWPARSERGETCHILD0/定位到响应的数组序号JSONPARSERNAMEINFOGETCHILD“NAME“/找到关键字NAMEJSONPARSERIDINFOGETCHILD“ID“/找到关键字ID3当我们找到想要的关键字之后,我们需要使用JSONPARSER类提供GETSTRING函数获得该关键字的值,GETSTRING函数的返回值为CHAR类型的;如果关键字的值的类型是INT类型的,则我们需要使用GETI
48、NT函数,获得该关键字的值例如郑州大学信息工程学院软件学院2008级毕业设计15CHARMYNAMENAMEGETSTRING/将NAME的值赋值给MYNAMEINTIDSIDGETINT/将ID的值赋值给IDS通过以上三个步骤,我们就能够从服务器返回的字符串中获得我们想要的相关信息,从而信息呈献给观众。353XML格式简介可扩展标记语言EXTENSIBLEMARKUPLANGUAGE,XML,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML是标准通用标记语言SGML的子集,非常适合WEB传输。XML提供统一的方法
49、来描述和交换独立于应用程序或供应商的结构化数据。它有如下几个特点1简单XML与ACCESS,ORACLE和SQLSERVER等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如数据索引、排序、查找、相关一致性等,XML仅仅是存储数据。事实上XML与其他数据表现形式最大的不同是他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。2结合XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与WINDOWS,MACOS,LINUX以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。3友好为了使得SGML显得用户友好,XML重新定义了SGML的一些内部值和参数,去掉了大量的很少用到的功能,这些繁杂的功能使得SGML在设计网站时显得复杂化。XML保留了SGML的结构化功能,这样就使得网站设计者可以定义自己的文档类型,XML同时也推出一种新型文档类型,使得开发者也可以不必定义文档类型。例如中国黑龙江哈尔滨郑州大学信息工程学院软件学院2008级毕业设计16大庆其中和是一对标签,分别是起始标签和结束标签。XML规定某些起