设为首页 收藏本站
查看: 1236|回复: 0

Windows Phone 7应用之Tencent微博——OAuth认证

[复制链接]

尚未签到

发表于 2015-5-8 08:56:09 | 显示全部楼层 |阅读模式
  前段时间写一篇关于Windows Phone 7应用之sina微博——UI设计 针对的是把Sina的微博.移植到WP7客户端上. 期间园子有几位园友提出共同开发这个应用.可是年底比较忙.时间比较紧张,断断续续的利用业余时间在更新这个Sina Mini Blog. 相对原来我对Sina Mini Blog在WP7客户端上设想. 功能性缩水很多. UI我在参考NetEasy,Tencent,FaceBook,Twitter后做了重新做了第二次设计, 总体主题和元素搭配做了更改,一方面出于对美观度考虑 另外一个更重要是就是Windows phone 7用户操作习惯.重现. 我在不断封装Sina API时也感觉到Sina 微博在功能上细节偏多, 很多需要控制的因素是需要在设计阶段就要考虑到. 如果你要完整移植过来 则不断修改自己的设计. 有些在Web功能并不适合在移动客户端上体现. 或是体现形式会发生改变.   特别Web端和移动客户端用户操作习惯不同, 这也会导致我们设计WP7客户端输入元素选择不同,这也是我在设计Sina Mini Blog Wp7 Client中才令我感到比较困惑的地方.
  我相信很多使用过Sina 微博或了解Sina API人应该知道. 新浪微博09年3月上线后一年,相继不断完善. 我们可以简单比对一下API开发平台就能感到 Sina API相对Tencent API 简直就是一个"巨无霸". 这也是我在封装Sina API 为了设计结构上合理 不断发生API代码重构这种情况下 很痛苦一件事. 另外一个就是大量应用细节化, 时间一推移,这让我觉得想要把Sina Mini Blog以完整高质量的版本移植Windows phone 7上成为一件遥遥无期的事情. ”Sina的高大全让人活的很累.  要么你学会功能上”大块”取舍, 要么就要在设计和功能迭代中做好十足耐心准备.k抗战到底,.  当然这也是我在微博WP7客户端转移到Tencent 微博一个很重要原因之一. 在这点上Tencent让我很轻松.
  ok.anyway.稍后我抽时间把这个简化版本的Sina mini blog 在WP7客户端整理一篇博文发出来. 转入本文主题.来说说现在微博的应用中涉及到Google的OAuth认证.
什么是OAuth?
  在目前微博应用 如果设计一个对外开放的API平台. 使用最多的应该就是OAuth对用户身份的认证上. 国内微博mini blog门户类似Sina.Tecent国外的Twitter、FaceBook都在使用这种OAuth协议.
DSC0000.png
  
  
  
  
  
  
  
  OAuth协议:为用户资源的授权提供了一个安全的、开放而又简易的标准,与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息[用户名与密码],即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的. 也许你还太不太明白. 那就简单那Sina 中队用户身份验证OAuth机制如何处理 作图如下:
DSC0001.png
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  弄清楚OAUTH流程之前,我们先了解下OAUTH的一些术语的定义:

  • OAUTH相关的三个URL

    • Request Token URL: 获取未授权的Request Token服务地址
    • User Authorization URL: 获取用户授权的Request Token服务地址
    • Access Token URL: 用授权的Request Token换取Access Token的服务地址

  如上三个地址一般情况在开放API平台都是相对固定.类似我们在调用Request Token URL获得一个Request Token以及一个密钥,.三个步骤就是对应OAUTH的三个URL服务地址,上面的步骤中,每个步骤分别请求一个URL,并且收到相关信息,并且拿到上步的相关信息去请求接下来的URL直到拿到Access Token,当我们有了Access Token就可以有权访问用户授权的资源了.
  在执行第一个请求时 为了验证用户身份是否合法.一般都会在开发的API平台公开一个APPKey和APPSecret .类似新浪微博平台要建立应用需要申请这样的一个开发者应用APPKey, Tencent也是如此:类似我申请Tencent开发APPKey
DSC0002.png
  
  
  
  
  
  
  可能你还不是太清楚关于OAuth这种验证机制过程,在官方找到一个特殊应用流程来参考    新蓝OAuth认证来详细解释.
DSC0003.png
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  标号中ABCDEFG分别表示不同操作: 具体进行一下拆分
  A. 使用者(第三方软件)向OAUTH服务提供商请求未授权的Request Token。向Request Token URL发起请求,请求需要带上的参数
  B. OAUTH服务提供商同意使用者的请求,并向其颁发未经用户授权的oauth_token与对应的oauth_token_secret,并返回给使用者。
  C. 使用者向OAUTH服务提供商请求用户授权的Request Token。向User Authorization URL发起请求,请求带上上步拿到的未授权的token与其密钥。
  D. OAUTH服务提供商将引导用户授权。该过程可能会提示用户,你想将哪些受保护的资源授权给该应用。此步可能会返回授权的Request Token也可能不返回。如Yahoo OAUTH就不会返回任何信息给使用者。
  E. Request Token 授权后,使用者将向Access Token URL发起请求,将上步授权的Request Token换取成Access Token。请求的参数见上图,这个比第一步A多了一个参数就是Request Token。
  F. OAUTH服务提供商同意使用者的请求,并向其颁发Access Token与对应的密钥,并返回给使用者。
  G. 使用者以后就可以使用上步返回的Access Token访问用户授权的资源,这时我们就可以访问类似微博对应授权访问的资源.
  这样一来就能看到OAuth协议验证整个过程. 由此相对以往传统通过直接暴露敏感的用户名和登录密码等信息,这种方式不仅简单而且安全.保障用户在不用传输自己铭感信息同时享受到自己需要的服务.
  OAUTH认证授权具有以下特点:
  1. 简单:不管是OAUTH服务提供者还是应用开发者,都很容易于理解与使用;
  2. 安全:没有涉及到用户密钥等信息,更安全更灵活;
  3. 开放:任何服务提供商都可以实现OAUTH,任何软件开发商都可以使用OAUTH;
  这也是为何在SNS社交即时类站点中经常.涉及到提供OAuth方式来对外开放资源. 这样不仅有效保证资源安全性同时是开放的.
Play Ground With OAuth
  目前Sina 和Tencent 微博都采用OAuth方式来验证对外开放用户身份同时也作为资源访问协议.OAuth开始于2006年11月,当时布莱恩·库克(Blaine Cook)正在开发 Twitter的OpenID实现,2007年4月,成立了OAuth讨论组, 2007年10月3日, OAuth核心 1.0最后的草案发布了.2010年4月,OAuth 1.0协议发表为RFC 5849,一个非正式RFC.
  目前已经开始下一个版本OAuth 2.0但不向后兼容OAuth 1.0。 OAuth 2.0关注客户端开发者的简易性,同时为Web应用,桌面应用和手机.Google,Yahoo,Microsoft等都提供了OAUTH认证服务.
  如果你觉得还是不好理解这个OAuth协议. Google推出一个Play Ground With OAuth 提供整个OAuth整个流程界面操作:
  Google OAuth Play Ground
  首先我们找到指定提供OAuth认证服务的链接地址. 一般作为对外开放的平台这个地址一般情况下都是固定的:
DSC0004.png
  
  
  
  
  
  
  
  
  
  选择Google提供的Book Search,在找到认证地址后 则来配置相关OAuth协议需要相关参数:
DSC0005.png
  
  
  
  
  
  
  
  
  
  
  第3 4 5步则分别根据OAuth协议具体参数配置获取Request Token,服务提供商同意用户请求则提供oauth_token与对应的oauth_token_secret.即第5步使用者向OAUTH服务提供商请求用户授权的Request Token.OAUTH服务提供商将引导用户授权,
  授权成功后则返回给用户一个Access_token以及对应的密钥,访问对应授权的资源. 明白了把 其实核心在如何获取Access_token授权.对象,
DSC0006.png
  
  
  
  
  
  
  最后一步:获得指定服务提供商提供的Access Token,访问平台资源和指定授权的数据.并可以指定数据返回的格式,已经对应OAuth对应处理的版本1.0/2.0. 以及Access Token发送请求的方式 get/Post等:
DSC0007.png
  
  
  
  
  
  
  执行URL以及结果上面执行整个URL 参数, 下面则对应回应执行从平台请求的数据结果:
DSC0008.png
  
  
  
  
  
  
  很多人在自定义Sina或Tencent进行封装API 时对OAuth的参数都是一知半解 很苦恼,这里详细介绍介绍在发钱Requst_Token请求前OAuth参数设置:
  OAUTH相关的参数定义:

  • oauth_consumer_key: 使用者的ID,OAUTH服务的直接使用者是开发者开发出来的应用。所以该参数值的获取一般是要去OAUTH服务提供商处注册一个应用,再获取该应用的oauth_consumer_key。类似我上文体到Tencent注册应用后提供的APPKey即是
  • oauth_consumer_secret:oauth_consumer_key对应的密钥。
  • oauth_signature_method: 请求串的签名方法,应用每次向OAUTH三个服务地址发送请求时,必须对请求进行签名。签名的方法有:HMAC-SHA1、RSA-SHA1与PLAINTEXT等三种。
  • oauth_signature: 用上面的签名方法对请求的签名。
  • oauth_timestamp: 发起请求的时间戳,其值是距1970 00:00:00 GMT的秒数,必须是大于0的整数。本次请求的时间戳必须大于或者等于上次的时间戳。
  • oauth_nonce: 随机生成的字符串,用于防止请求的重放,防止外界的非法攻击。
  • oauth_version: OAUTH的版本号,可选,其值必须为1.0。现在已经Google OAuth已经提供2.0版本验证,而Tencent则采用的是Google的OAuth则可以采用 2.0版本杜绝 1.0中数据访问权限的漏洞.
  在封装Sina和Tencent中对于用户认证都采用的是OAuth方式,了解OAuth工作原理和机制也是自定义封装API一个很重要的前提. 当然现在官方已经提供了部分开发用户封转好的C#的SDK. 但我觉得写不怎么样. 有的提供并不完善.
  因Tencent API相对Sina的巨无霸版本. 已经瘦身很多. 这样一来对于封装API 和Tencent Mini Blog整个功能移植到Windows phone 7客户端上市非常重要的.稍后我会 持续更新 Windows phone 7 上Tencent客户端应用相关文章,. 如有留言或疑问请在留言评论中提出.
  [昨天不知博客园什么情况 下午突然上不去….???]

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-64824-1-1.html 上篇帖子: Win7 32位旗舰版系统设置播放视频不弹出屏保的方法 下篇帖子: Windows phone 7 Mango 更新发布会Session 整理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表