1、资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。序号( 学号) : 长春光华学院毕 业 设 计( 论 文) 基于IOS平台的移动互联网终端大型社交类应用客户端开发 姓 名盛遵义教 学 院电器信息学院专 业电子信息工程班 级电信09401指导教师张淑艳( 讲师) 年05月24日 目 录摘要iAbstractii第1章 绪论11.1 开发背景及意义.1 1.1.1 开发背景1 1.1.2 开发意义31.2 开发工具及运行环境4 1.2.1 开发工具4 1.2.2 运行环境4第2章 项目所用技术介绍52.1 IOS简介52.2 IOS系统架构52.3 IOS系统优势7 2.3.1 IO
2、S模块性7 2.3.2 灵活性7 2.3.3 可伸缩性7 2.3.4 可操作性7第3章 系统分析83.1 功能需求83.2 系统使用例图9第4章 系统设计细节104.1 程序总体架构104.2 模块功能设计11第5章 详细设计与编码125.1 授权模块12 5.1.1 OAuth相关的三个URL12 5.1.2 OAuth相关的参数定义12 5.1.3 OAuth认证授权流程135.2 微博首页模块155.3 发布微博模块22 5.3.1 基本功能22 5.3.2 选择图片上传24 5.3.3 好友、 添加热点话题和表情26第6章 系统测试286.1 授权模块测试用例296.2 发表微博测试用
3、例296.3 浏览微博测试用例296.4 系统评价30第7章 总结31谢 辞32参考文献33基于IOS平台的移动互联网终端大型社交类应用客户端摘要 微博即MicroBlog, 网上昵称围脖, 是一种非正式的迷你型博客, 是一个基于用户关系的信息分享、 传播及获取平台。用户能够经过WEB(WORLD WIDE WEB)、 WAP( Wireless Application Protoco) 以及各种客户端组件个人社区, 以140字左右的文字更新信息, 并实现即时分享。它是一种互动及传播性极快的工具, 具有实时性, 传播速度甚至比大众媒体还快。 本文阐述了新浪微博客户端的各种相关知识, 特别对iP
4、hone客户端的开发和应用作了详细的介绍, 同时将设计过程中所用到的主要方法及控件进行了详细说明。此次毕业设计以IOS操作系统作为开发平台, Xcode作为开发环境, 参照新浪提供的API, 进行微博客户端软件的设计与实现。本软件实现了微博首页获取数据、 我的资料、 好友资料、 我的关注、 我的粉丝、 收藏微博、 评论微博、 转发微博、 添加照片、 发表微博等功能, 具备了一般微博所具有的功能, 具有较强的实用性。关键词 IOS平台 iPhone微博 sina微博ABSTRACTAbstract Microblogging is a relationship based on user inf
5、ormation-sharing, dissemination and access platform. Users can use WEB(WORLD WIDE WEB), WAP( Wireless Application Protoco) individual components and a variety of client communities to inter about 140 words of text updates, and share this instantly . It is an interactive and fast spread tool, spread
6、even faster than the traditional media.This article introduces the development of iPhone microblogging system, the system is divided into server-side and mobile client. Microblogging system uses the MVC design pattern, the three-layer architecture. The development tools is the Xcode.The developing e
7、nvironment is Xcode4.5 and the iPhone and use sina rest API. This sina ios microblog implement logining, register, release microblogging, visit the Friends HomePage, upload photos, update status and so on.Except the above functions, in mobile client, the table for discussion and real-time microblogg
8、ing update reminders are added. Design and add photos and Implementation of the table function is to resolve the problem of the microblogging and mobilize the enthusiasm of the users.Keywords IOS iphone MicroBlog sina MicroBlog第1章 绪论1.1 开发背景及意义1.1.1 开发背景 3月, 博客技术先驱blogger创始人埃文威廉姆斯(Evan Williams)创立的新
9、兴公司Twitter推出了微博服务。在最初阶段, 这项服务只是用于向好友的手机发送文本信息。Twitter英文原意为小鸟的叽叽喳喳声, 用户能用如发手机短信的数百种工具更新信息。Twitter的出现把世人的眼光引入了微博的小小世界里。Twitter是一个社交网络及微博客服务。现在, 用户能够经由SMS、 即时通信、 电邮、 Twitter网站或Twitter客户端软件(如Twitterrific)输入最多140字的文字更新, Twitter被Alexa网页流量统计评定为最受欢迎的50个网络应用之一。在 5月, 国际间计算总共有111个类似Twitter的网站。然而, 最值得注意的仍是Twitt
10、er, 它于 在得克萨斯州奥斯汀举办的南非西南会议赢得了博客类的网站奖。Twitter的主要竞争对手是Plurk和Jaiku。后来微博客的新服务特色持续诞生, 例如Plurk有时间轴能够观看整合了视讯和照片的分享, Identi、 Pownce整合了微薄客加上档案分享和事件邀请。Twitter在国外的”大红大紫”, 令国内有些人终于坐不住了。 从校内网起家的王兴, 在 把企业卖给千橡互动后, 于第二年建立了饭否网。同样擅长技术活的SwiSen也瞄准了这个行业, 很快清新、 简约的随心微博也开始正式上线。而腾讯作为一个拥有4.1亿QQ用户的企业, 看着用户对随时随地发布自己状态的强烈需求后, 也
11、忍不住尝试了一把, 8月13日腾讯滔滔上线。但事实证明, Twitter建立的”微型王国”不是在短时间内掘出黄金的浅矿, 国内的微博目在当时尚处于慢热的状态。据悉, 随心微博、 饭否网等当前仅拥有几十万用户, 每月处理几千万条信息。国内微博不约而同地将现在的目光放在了产品调整以及服务完善上, 在尚无法吸引到风险投资的眼光之前, 她们最需要做的可能是如何靠自己的能力继续活下去。从 中国第一家带有微博色彩的饭否网开张, 到 , 微博这个全新的名词, 以摧枯拉朽的姿态扫荡世界, 打败奥巴马、 甲流等等名词, 成为全世界最流行的词汇。 伴随而来的, 是一场微博世界人气的争夺战, 大批量的名人被各大网站
12、招揽, 各路名人也以微博为平台, 在网络世界里聚集人气, 同样, 新的传播工具也造就了无数的草根英雄, 从默默无闻到新的话语传播者, 往往只在一夜之间、 寥寥数语。 7月中旬开始, 国内大批老牌微博产品(饭否、 腾讯滔滔等)停止运营, 一些新产品开始进入人们的视野, 像1月份开放的大围脖, 6月份开放的Follow5, 7月份开放的贫嘴, 8月份开放的新浪微博。其中Follow5在 7月19日孙楠大连演唱会上的亮相, 是国内第一次将微博引入大型演艺活动, 与twitter当年的发展颇有几分神似。 国内微博迎来了春天, 微博像雨后春笋般崛起。四大门户网站均开设微博。根据相关公开数据, 截至 1月
13、份, 微博类产品在全球已经拥有7500万注册用户。中国互联网络信息中心( CNNIC) 发布的第28次中国互联网络发展状况统计报告报告显示, 上半年, 中国微博用户从6331万增至1.95亿, 增长约2倍。该报告指出, 中国互联网的普及率增至36.2%, 较 增加1.9%。 上半年, 中国微博用户数量从6331万增至1.95亿, 半年增幅高达208.9%。微博在网民中的普及率从13.8%增至40.2%。从 底至今, 手机微博在网民中的使用率比例从15.5%上升到34%。至今, 新浪微博用户数超过1亿, 得益于抢占了先机, 而且在整体的战略执行上也比较彻底到位, 因此获得了现在的地位。仅仅三年时
14、间, 新浪微博就为新浪生下了一个价值几十亿美金的金蛋。开放API( OpenAPI) 是SaaS( Software as a Service, 软件即服务) 模式下常见的一种应用, 网站的服务商将自己的网站服务封装成一系列API( Application Programming Interface, 应用编程接口) 开放出去, 供第三方开发者使用, 这种行为就叫做开放网站的API, 所开放的API就被称作OpenAPI( 开放API) 。网站提供开放平台的API后, 能够吸引一些第三方的开发人员在该平台上开发商业应用, 平台提供商能够获得更多的流量与市场份额, 第三方开发者不需要庞大的硬件与
15、技术投资就能够轻松快捷的创业, 从而达到双赢的目的, 开放API是大平台发展、 共享的途径, 让开发者开发一个有价值应用, 付出的成本更少, 成功的机会更多。今天, OpenAPI作为互联网在线服务的发展基础, 已经成为越来越多互联网企业发展服务的必然选择。OpenAPI的典型成功范例是Google Maps API和Twitter, Google Maps有Google这样的大公司支持, 成功当然并不奇怪, 可是Twitter的成功就很能说明问题。事实上, 如果Twitter仅仅是一个网页形式的微博客的话, Jaiku就能够轻松的将其打败, Twitter根本不可能取得今天的成就。Twitt
16、er的活力就在于开放API, Twitter的成功和开放API密不可分。Twitter的开放API能够激发个人创作的积极性, 引来了大量的第三方应用, 这些第三方应用同时又扩大了Twitter原有的功能, 让Twitter更好用, 从而极大丰富了Twitter平台自身的功用和乐趣, 现在, Twitter超过一半的流量都是来自第三方API。随着Twitter的OpenAPI发布数量不断增加, 运营过程中也开始暴露出一些问题。OpenAPI的巨大的访问量引起了Twitter种种性能问题, 使得Twitter的稳定性大为降低, 为了支持大量的外部API, Twitter宕机频繁, 这估计是几乎所有
17、Twitter用户都遇到过的现象。但即使如此, Twitter也没有放弃对OpenAPI的支持。因为开放API是历史的潮流, 是必然的趋势, 顺之者昌, 逆之者亡, Twitter之因此击败众多各式各样的微博客网站, 开放API功不可没。国内的主流微博服务也纷纷开放了API, 供广大第三方开发者接入微博提供了途径。本论文就是利用新浪微博的开放API来完成的。1.1.2 开发意义在智能手机飞速发展的今天, 手机成为人们快速获取、 发布和传递信息的重要渠道, 它在人们政治、 经济、 生活等各个方面发挥着重要的作用.因此应用建设在智能手机应用上的地位显而易见, 它已成为人文信息交流, 政府、 企事业
18、单位信息化建设中的重要组成部分, 从而倍受人们的重视。这次我们所设计的课题正是智能手机与社会生活之间的紧密关系的体现, 现今的社会, 人们已经离不开了手机网络, 它已经成为人与人之间交流的一种形式, 它不但仅是对通信网络、 终端设备的整合再生, 更是对人际关系、 信息传播方式的整合再生, 这不但对一个公司的发展具有重要意义, 而且对促进现有社会资源充分发挥更大效能、 推动社会进步都有着积极意义。微博, 有点像聊天室或者说是像茶楼酒肆。是沟通人与人之间思想, 交流知识, 讨论问题和交换观点的网络交际平台。在这个平台上首先是虚拟的人( 性别, 年龄, 职业, 喜好, 职务等) 共同谈论你所感兴趣的
19、任何话题, 经过你们之间交流争辩让你对它有更进一步的了解和认知。微博的传播速度更快, 关注的人更多, 时效性更强。微博上有许多信息是在传统媒体上看不到的, 而公众对公共话题天生有一种关注心态, 在微博上企业和客户之间不再是单纯的买卖关系, 微博用好了, 就能够在企业用户中培养出超越买卖的情感关系, 在市场竞争中游刃有余。传统的企业口碑营销, 偏重在认识的人之间的口碑, 但现在, 越来越多的年轻人相信网络社群上不认识的”亲朋好友”的评价。因此, 赢得网友的口碑, 对企业而言, 几乎跟花钱做广告一样重要。微博客的出现丰富了企业网络营销的手段, 帮助企业”赢得”陌生人的口碑。新浪微博主要用户群体集中
20、在影视明星、 企业高管、 经济学者、 传媒专家、 营销策划人、 评论员、 主持人(主播)、 创业者、 网络红人, 这些人基本上代表着颠覆与变革、 创新与时尚。微博客作为一个新的交流互动平台, 正在受到越来越多人的青睐。相比博客而言, 微博客使用更加简单, 用户所付出的单位成本、 精力投入都更少, 写作门槛更低, 用户扩展更为迅速, 为可能实现的媒体信息传播积累了庞大的通讯员队伍。同时, 整合各类工具特别是手机短信的优势, 微博客具备了实时传播的特性, 在面对突发新闻事件时, 微博客的报道速度往往能领先于传统媒体。随着微博的”客”流量不但呈爆炸式增长, 而且其影响力也与日俱增。微博客迅速成为中国
21、企业及时传播信息, 增加用户与企业粘性的营销利器。众多中小企业纷纷设立官方微博客, 安排专人在新浪微博客开博, 与粉丝紧密互动, 积极推广企业品牌。微博预示着个体的力量不再孱弱, 它在影响和改变这个世界上正发挥越来越大的作用。企业微博的最大价值在于构建与用户沟通的渠道和平台, 高效传达及展现企业产品与服务, 实现企业品牌的快速传播。越来越多的传统企业成功借助微博宣传企业品牌与企业文化, 经过建立口碑来获得长期利益。12 开发工具及运行环境1.2.1 开发工具(1) 开发该软件使用的开发工具为Xcode4.5版本1。(2) 开发该软件使用的开发语言为Objective-C等开发语言2-3。1.2
22、.2 运行环境(1) 该软件运行手机的版本为iPhone4及其以上版本。(2) 开发该软件运行的苹果系统为IOS4.3.5及其以上版本。(3) 软件运行手机硬件参数 CPU: 苹果A4处理器 集成PowerVR SGX535图形核心, 800MHz; Ram: 512MB; 屏幕: 3.5英寸, 960640像素; 支持频段: WCDMA 2100MHz 、 CDMA EV-DO( 电信3G专用) 。第2章 项目所用技术介绍2.1 IOS简介IOS是由苹果公司开发的手持设备操作系统。苹果公司最早于 1月9日的Macworld大会上公布这个系统, 最初是设计给iPhone使用的, 后来陆续套用到
23、iPod touch、 iPad以及Apple TV等苹果产品上。IOS与苹果的Mac OS X操作系统一样, 它也是以Darwin为基础的, 因此同样属于类Unix的商业操作系统。原本这个系统名为iPhone OS, 直到 6月7日WWDC大会上宣布改名为IOS。截止至 11月, 根据Canalys的数据显示, IOS已经占据了全球智能手机系统市场份额的30%, 在美国的市场占有率为43%, 据市场研究公司ABI Research最新发表的市场预测报告称, 苹果的全球智能手机市场份额在 将达到最高点的22%。2.2 IOS系统架构Objective-C作为开发语言, 是c语言的升级版4。iO
24、S的系统结构分为以下四个层次: 核心操作系统( the Core OS layer) , 核心服务层( the Core Services layer) , 媒体层( the Media layer) , Cocoa 触摸框架层( the Cocoa Touch layer) 。如图1所示。图1 IOS系统结构层次对初学者来说, Objective-C存在了很多令人费解的写法, 实际上她们是非常优雅的。有C语言基础的程序员在专业老师的指导下, 用1个月的时间就能够完全掌握Objective-C这门编程语言了。程序员写的最多的就是函数以及调用自己写的或者别人写的函数。本文就从函数的角度来看下Ob
25、jective-C的优雅之处。C#和Objective-C同属于C语言系列5。让我们先看下C#的函数定义和调用, 做个对比。C#函数的定义: publicvoiddoIt(stringactorName, stringmovieName, inttimesSeen)Console.Write(0ismyfavoriteactorinthemovie1, Isawit2times., actorName, movieName, timesSeen);函数的调用: Class1objMovie=newClass1();objMovie.doIt(莱昂纳多迪卡普里奥, 盗梦空间, 120);再让.N
26、ET程序员看下Objective-C的定义: -(void)doIt:(NSString*)actorNamemovieName:(NSString*)valuetimesSeen:(int)timesNSLog(%ismyfavoriteactorinthemovie%, Isawit%itimes., actorName, value, times);如果你第一次看Objective-C, 肯定会琢磨不透上面的代码, 怀疑是不是写错了。对于上面这个函数的定义: (1) -表示这个函数是实例函数( 类似非静态函数) , +表示这个函数是类函数( 类似静态函数) (2)( void) 表示这个
27、函数没有返回值。(3) 函数名是doIt:, 而不是doIt(4) 参数用空格隔开(5) 参数类型写在括号中(6) 参数分内部参数和外部参数, 如电影名称, 内部参数是: value, 外部参数是: movieName(7) 函数的一个参数没有外部参数的名称, 有内部参数名。如: actorName。调用: objMoviedoIt:遵义.思密达movieName:盗梦空间timesSeen: 000从上面代码能够看出除了第一个参数, 其余的参数都能够加上外部参数名称用于区别。从上面能够看出Objective-C和C#区别很大, 实在会令.NET程序员费解。Objective-C函数设计的优雅
28、之处在于既有内部参数名又有外部参数名, 能够不用再在内部定义变量来存放函数的参数。2.3 IOS系统优势2.3.1 IOS模块性IOS是Cisco路由软件的初始品牌名称。随着Cisco技术的发展, IOS不断扩展, 成为Cisco Central ENgineering( 中央工程部门) 所称之为的”一系列紧密连接的网际互连软件产品”。尽管在其品牌名识别中, IOS可能依然等同于路由软件, 可是它的持续发展发已使之过渡到支持局域网和ATM交换机, 并为网络管理应用提供重要的代理功能。必须强调的是, IOS是Cisco开发的技术: 一项企业资产。它给公司提供独特的市场竞争优势。当前许多竞争者许可
29、IOS在其集线器和中由模块内运行, IOS已尼广泛成为网际互连软件事实上的工业标准。2.3.2 灵活性基于Cisco产品的工程开发以用户能够获得适应变化的灵活性。IOS软件提供一个可扩展的平台, Cisco会随着需求和技术的发展集成新的功能。Cisco能够更快地将新产品投向市场, 我们的客户能够享用这种优势。2.3.3 可伸缩性IOS遍布网际互连市场; 广泛的Cisco使用伙伴及竞争者在她们的产品上支持IOS.IOS软件体系结构还允许其集成构造企业互联网络的所有部分。Cisco已经定义了4个: 核心/中枢: 网络中枢和WAN服务, 包括大型骨干网络路由器和ATM交换机。工作组: 从共享型局域网
30、移植到局域网交换( VLANs) 提供更优的网络分段和性能。) 远程访问: 远程局域网连接解决方案; 边际路由器、 调制解调器等。IBM网际互连: SNA和LAN并行集成, 从SNA转换到IP.Cisco的IOS扩展了所有这些领域, 提供了支持端到端网际互连的稳健性。2.3.4 可操作性IOS提供最广泛的基于标准的物理和逻辑协议接口超过业界任何其它供应商: 从双绞线到光纤, 从局域网到园区网到广域网, Novell NetWare, UNIX, SNA以及其它许多接口。即是说, 一个围绕IOS建立的网络将支持非常广泛的应用。第3章 系统分析3.1 功能需求此次程序设计任务是IOS平台下的新浪微
31、博客户端设计, 程序将在真实手机运行调试。此次程序设计用户界面要求较为友好, 由于针正确用户为iPhone智能手机用户, 因此程序的操作全部能够经过触控完成操作。本新浪微博客户端要求设计合理.在设计完成后, 要求程序能够实现新浪微博的登录功能。同时, 程序还必须能够实现对对新浪微博的首页信息获取, 用户资料, 好友资料, 发表微博, 用户的关注, 用户的粉丝, 转发微博, 评论微博, 收藏微博, 我发表的微博等。最后, 新浪微博获取信息要具有较高的执行效率。此次程序设计的操作系统要求为IOS4.3.5及以上版本。此次程序设计需要在Xcode4.5环境下开发。本客户端的数据都是经过网络来自于新浪
32、的服务器67, 产生的数据也是上传到新浪的服务器, 在客户端存储的只有OAuth产生的一些省份识别信息, 因此本客户端无需使用数据库。基于系统需求分析, 该系统需要实现以下功能: (1) 用户登录授权: 当用户第一次使用该软件时, 会打开新浪微博的授权页面, 如果是老用户, 则授权登录, 若是新用户, 则注册新浪微博, 然后跳转到微博首页。(2) 发布微博: 发布微博是微博的基本功能, 用户将自己想要向外界传达的信息进行发布, 这是用户向外传播信息的最主要的途径与方法。(3) 修改用户个人信息: 用户能够根据个人需要修改自己的信息, 包括用户名、 email、 心情、 以及上传头像或者更改为其
33、它头像。(4) 查看微博更新: 在微博的首页要显示用户关注的博友的最近微博更新, 并能够查看微博的评论, 以及查看博友的主页。(5) 转发微博: 转发微博是微博的基本功能之一, 用户将自己看到的感觉有用的信息进行转发, 不需要用户全部编写, 能够按照微博原文转发, 也能够在原文的基础上更改信息后进行转发, 这是用户发布微博的另一种较为方便的方法。(2) 评论微博: 当用户对一篇微博有所感想时能够对这篇微博进行发表自己的评论, 用户能够写下自己的想法进行评论, 当评论成功时, 别的用户再次浏览该篇微博时就能够在文章的下面看到用户的评论, 这是微博进行互动的另一种方法。3.2系统使用例图在该软件系
34、统中用户能够进行的操作有用户授权、 查看微博首页、 查看微博详情、 发布新的微博、 对别人的或者自己的微博进行评论、 转发别人的微博、 查看别的用户详情护自己的详细信息, 该系统使用例图, 如图2所示。图2 系统使用例图第4章 系统设计细节4.1 程序总体架构在三层结构中(如图3所示), 解决了客户端/服务器模式面临的许多问题。经过划分客户与服务器之间的功能, 分布式计算提供了一种把应用中的用户界面从企业逻辑中分离出来的自然方法。在分布式环境下, 企业逻辑提供了一种把应用中的用户界面从企业逻辑中分离出来的自然方法。在分布式环境下, 企业逻辑集中地安装在应用服务器上, 这样就降低了客户端的负载,
35、 同时对敏感信息的访问也能够得到很好的控制。采用分布式计算有着多方面的技术优势8, 包括:(1) 封装性; (2) 性能; (3) 全性管理。在分布式计算模式中, 由于所有的商业逻辑都驻留在服务器端, 信息管理部就能够十分方便地监控服务器的运行情况, 很容易地控制访问服务器以及与服务器应用打交道人员的数量。这能够大大简化管理员对系统的管理, 减轻系统维护的工作量, 并确保系统的可靠运行。图3 三层客户/服务器模型软件设计时, 考虑到整个系统的延续性和可扩充性, 我们将系统应用体系分为三部分: 用户表现层、 数据访问层、 商业逻辑层。( 1) 用户表现层:处理用户界面的功能; ( 2) 数据访问
36、层:在一般情况下指数据库; ( 3) 商业逻辑层:指在程序中做出职能决策的那一部分功能。微博客户端的结构图如图4 所示。图4 微博客户端结构图4.2 模块功能设计本新浪微博客户端大致分为首页、 微博详情、 用户信息、 发布微博、 查看评论等模块, 分别负责不同的功能6: 授权模块: 访问用户的信息与数据需要经过用户的授权, 因此必须有用户授权的模块本软件才能正常使用。首页: 是用户浏览微博的界面, 会将用户所关注的人的微博按照时间先后顺序排列, 其中会显示微博的作者、 发布时间、 内容、 转发评论数量、 发布方式等。首页是用户使用最多的界面, 也是软件初次打开的默认界面。微博详情: 当用户在首
37、页浏览微博的时候, 点击某一条微博就会进入到微博详情的界面, 这个界面会更详细的展示用户所点击的那条微博, 而且提供转发和评论的功能按钮。用户信息: 用户信息是展示用户的界面, 何以展示用户本身的信息并修改, 也能够查看任何用户感兴趣的用户。发布微博: 用来发布新微博的界面, 转发和评论的时候也会用到这个模块。查看评论: 用来浏览某一条微博的评论。第5章 详细设计与编码5.1 授权模块新浪微博采用OAuth授权方式来使第三方应用访问用户的数据, 这样的话第三方应用就能够在不知道用户帐号和密码的情况下获取用户数据。OAuth协议为用户资源的授权提供了一个安全的、 开放而又简易的标准。与以往的授权
38、方式不同之处是OAuth的授权不会使第三方触及到用户的帐号信息( 如用户名与密码) , 即第三方无需使用用户的用户名与密码就能够申请获得该用户资源的授权, 因此OAuth是安全的。OAuth协议为用户资源的授权提供了一个安全的、 开放而又简易的标准。同时, 任何第三方都能够使用OAuth认证服务, 任何服务提供商都能够实现自身的OAuth认证服务, 因而OAuth是开放的。业界提供了OAuth的多种实现如PHP、 JavaScript, Java, Ruby等各种语言开发包, 大大节约了程序员的时间, 因而OAuth是简易的。当前互联网很多服务如Open API, 很多大公司如Google,
39、Yahoo, Microsoft等都提供了OAuth认证服务, 这些都足以说明OAuth标准逐渐成为开放资源授权的标准。5.1.1 OAuth相关的三个URLRequest Token URL: 获取未授权的Request Token服务地址; User Authorization URL: 获取用户授权的Request Token服务地址; Access Token URL: 用授权的Request Token换取Access Token的服务地址。5.1.2 OAuth相关的参数定义OAUTH_consumer_key: 使用者的ID, OAuth服务的直接使用者是开发者开发出来的应用。因
40、此该参数值的获取一般是要去OAuth服务提供商处注册一个应用, 再获取该应用的OAUTH_consumer_key。OAUTH_consumer_secret: OAUTH_consumer_key对应的密钥。OAUTH_token:OAUTH进行到最后一步得到的一个”令牌”, 经过此”令牌”请求资源的网站就能够去拥有资源的网站抓取任意有权限能够被抓取的资源。 OAUTH_token_secret:OAUTH_token对应的私钥OAUTH_signature_method: 请求串的签名方法, 应用每次向OAuth三个服务地址发送请求时, 必须对请求进行签名。签名的方法有: HMAC-SHA
41、1、 RSA-SHA1与PLAINTEXT等三种。OAUTH_signature: 用上面的签名方法对请求的签名。OAUTH_timestamp: 发起请求的时间戳, 其值是距1970 00:00:00 GMT的秒数, 必须是大于0的整数。本次请求的时间戳必须大于或者等于上次的时间戳。OAUTH_nonce: 随机生成的字符串, 用于防止请求的重放, 防止外界的非法攻击。OAUTH_version: OAuth的版本号。5.1.3 OAuth认证授权流程OAuth认证授权就三个步骤, 三句话能够概括: (1) 获取未授权的Request Token(2) 获取用户授权的Request Toke
42、n(3) 用授权的Request Token换取Access Token当应用拿到Access Token后, 就能够有权访问用户授权的资源了。上面的三个步骤中, 每个步骤分别请求一个URL, 而且收到相关信息, 而且拿到上步的相关信息去请求接下来的URL直到拿到Access Token9。具体每步执行信息如下: 使用者( 第三方应用) 向OAUTH服务提供商请求未授权的Request Token。向Request Token URL发起请求, 请求需要带上参数。 OAuth服务提供商同意使用者的请求, 并向其颁发未经用户授权的oauth_token与对应的oauth_token_secret
43、, 并返回给使用者。 使用者向OAuth服务提供商请求用户授权的Request Token。向User Authorization URL发起请求, 请求带上上步拿到的未授权的token与其密钥。 OAuth服务提供商将引导用户授权。该过程可能会提示用户, 你想将哪些受保护的资源授权给该应用。此步可能会返回授权的Request Token也可能不返回。如Yahoo OAuth就不会返回任何信息给使用者。 Request Token 授权后, 使用者将向Access Token URL发起请求, 将上步授权的Request Token换取成Access Token。 OAuth服务提供商同意使用
44、者的请求, 并向其颁发Access Token与对应的密钥, 并返回给使用者。 使用者以后就能够使用上步返回的Access Token访问用户授权的资源。从上面的步骤能够看出, 用户始终没有将其用户名与密码等信息提供给使用者( 第三方软件) , 从而更安全。用OAuth实现背景一节中的典型案例: 当服务B( 打印服务) 要访问用户的服务A( 图片服务) 时, 经过OAuth机制, 服务B向服务A请求未经用户授权的Request Token后, 服务A将引导用户在服务A的网站上登录, 并询问用户是否将图片服务授权给服务B。用户同意后, 服务B就能够访问用户在服务A上的图片服务。整个过程服务B没有
45、触及到用户在服务A的帐号信息。本软件使用新浪微博的 ios SDK来辅助开发, 这里面已经集成了一个开源的ios OAuth认证包: 第三方应用首先必须在新浪微博的开发者平台上注册成为开发者而且获得相应的app key 和app secret才能够引导用户注册6。新浪微博的开放平台网址: 。requestToken = weibo.getOAuthRequestToken(xiha:/OAuthActivity);OAuthConstant.getInstance().setRequestToken(requestToken);url = requestToken.getAuthenticat
46、ionURL();Intent intent = new Intent(XihaActivity.this, ActivityWebView.class);intent.putExtra(url, url);startActivity(intent);首先设置RequestToken, ”xiha:/OAuthActivity”是一个ios系统定义的url类似于url, 一个协议后跟着一个路径, 当授权成功后就打开注册这个uri的页面。获取授权页面的url后, 经过一个intent传到一个新的activity。在这个activity中, 放置一个webview: web.loadUrl(url)。这样来打开授权页面, 效果如图5所示, 授权成功后就会打开注册xiha:/OAuthActivity这个uri的Activity。图5 微博授权页面5.2 微博首页模块首先在manifest文件中为首页的Activity下面这行代码: