祥叔学编程

祥叔学编程
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

WP7 开发学习(1):“合一微博” 与 OAuth 原理

Posted on 2012-03-18 16:28  祥叔  阅读(2496)  评论(4编辑  收藏  举报

    本文以开发一个简单整合了新浪微博和腾讯微博于一体的WP7客户端——“合一微博” 作为WP7开发学习的载体,来记录WP7开发学习中的各种问题及解决方案。

    要实现的功能:

    1,通过腾讯微博、新浪微博的OAuth接口,登陆腾讯微博,然后登陆新浪微博。

    2,读取微博:调用新浪微博开发API和腾讯微博开发API读取数据列表,即timeline ,然后根据时间排序。

    3,发布微博: 调用新浪微博开发API和腾讯微博开发API发布微博,发布时可以选择是否同步到新浪或腾讯。

    先看几张草图,以便对要做的事情有个更直观的了解:

登陆腾讯

 

登陆新浪

 

Timeline

 

 发布微博

 

   首先我们得了解OAuth 协议的原理和使用,这样才能解决第一个问题:登陆

    新浪微博开发API使用的是OAuth2.0 协议,而腾讯微博开发API使用的是OAuth1.0协议。

    OAuth1.0 授权的主要步骤如下:

    1:先到OAUTH服务提供商(如腾讯)注册应用,获得应用的AppKey 和 APPSECRET。

    2:用第一步获得的AppKey 和 APPSECRET向服务商发送请求获得未授权的Request Token ,

       OAUTH服务提供商同意开发者的请求,并向其颁发未经用户授权的oauth_token与对应的oauth_token_secret,并返回给开发者。

    3: 请求用户授权Request Token,OAUTH服务提供商将引导用户授权,让用户提交用户名、密码。用户同意授权后,返回授权的Request Token。

    4:Request Token 授权后,使用者将向Access Token URL发起请求,将上步授权的Request Token换取成Access Token,

       OAUTH服务提供商同意开发者的请求,并向其颁发Access Token与对应的密钥,并返回给开发者。

    5:使用上步返回的access_token和access_token_secret访问用户授权的资源。

   

    整个流程中开发者是不会接受到用的用户名和密码的,所以OAuth协议是安全的,2.0也是如此。

   

    每一次请求必须被签名,OAUTH服务提供商会根据签名来判断请求的合法性。

    签名算法使用Signature Base String和密钥(Secret)生成签名,每次的签名值都不一样。

 

   access_token 每次返回的此都是一样的,所以可以保存起来,以便下次使用,这样用户就可以不用每次都登陆授权。

   

    参考:

    http://wiki.open.t.qq.com/index.php/OAuth%E6%8E%88%E6%9D%83%E8%AF%B4%E6%98%8E

    http://baike.baidu.com/view/3948029.htm

   

    OAuth2.0 比OAuth1.0 在理解和实现流程要简单方便很多 。

    主要步骤如下

    1:先到服务提供商(如新浪)注册应用,获得应用的AppKey。

    2:获取Authorization Code,使用上一步获得的client_id(即AppKey),向服务商发起引导用户授权的请求,用户同意授权后会返回Authorization Code

    3:使用上一步获得的Authorization Code 向服务商换取Access Token

    4:使用上步返回的access_token访问用户授权的资源。

    下面是一张转自新浪的关于OAuth2.0的流程图

    OAuth2.0 每次返回的access_token是不一定是同样的,有过期时间(即ExpiresIn),搞的有点像cookie。

    我们也可以把它保存起来,不过再次读取时要判断是否已经过期。

 

   我们可以看到OAuth2.0 相对于 OAuth1.0 在流程上少了一个步骤,理解上也少了appSecret、 tokenSecret这些概念。

 

   作为本系列的第一篇并未涉及到winphone7开发的相关知识,但是解决了第一步登陆才能顺利的向后进行。

 

原文地址:http://www.cnblogs.com/xumingxiang/archive/2012/03/18/2404735.html  

作者 : 徐明祥
出处:http://www.cnblogs.com/xumingxiang 
版权:本文版权归作者和博客园共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任