本文以开发一个简单整合了新浪微博和腾讯微博于一体的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
版权:本文版权归作者和博客园共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任