原文:http://blog.csdn.net/coolszy/article/details/6461067
腾讯微博是一个由腾讯推出,提供微型博客服务的类Twitter网站。在腾讯官方的软件或网站中发布微博我们需要输入QQ号和密码,同样如果我们自己开发客户端给用户使用,我们也需要用户提供QQ号和密码,这就留下了安全隐患。不发分子可以在程序中留下后门,获取QQ号和密码,从而进行违法操作。为了保护QQ用户的利益,提高微博开放平台的安全指数,腾讯微博API采用OAuth协议为第三方提供接入服务,遵循[RFC-5849]规范。目前OAuth最新版本为OAuth2.0,腾讯微博API使用OAuth 1.0A版本。OAuth官网地址:http://www.oauth.net/
OAuth是什么
OAuth协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAuth的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAuth是安全的。同时,任何第三方都可以使用OAuth认证服务,任何服务提供商都可以实现自身的OAuth认证服务,因而OAuth是开放的。业界提供了OAuth的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAuth是简易的。目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAuth认证服务,这些都足以说明OAuth标准逐渐成为开放资源授权的标准。
在官方网站的首页,可以看到下面这段简介:
An open protocol to allow secure API authorization in a simple and standard method from desktop and web applications.
大概意思是说OAuth是一种开放的协议,为桌面程序或者基于BS的web应用提供了一种简单的,标准的方式去访问需要用户授权的API服务。OAuth类似于Flickr Auth、Google's AuthSub[1]、Yahoo's BBAuth、 Facebook Auth等。
OAuth认证授权具有以下特点:
1. 简单:不管是OAuth服务提供者还是应用开发者,都很容易于理解与使用;
2. 安全:没有涉及到用户密钥等信息,更安全更灵活;
3. 开放:任何服务提供商都可以实现OAuth,任何软件开发商都可以使用OAuth;
OAuth的认证流程
具体每步执行信息如下:
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也可能不返回。在腾讯认证过程中此过程会定位到腾讯的授权页面,要求用户输入QQ号和密码,然后选择同意或者拒绝对应用授权。授权成功后客户端应用会在网页中给出授权码,用户需要手工将验证码输入到应用中才能完成授权流程。返回参数:
E. Request Token 授权后,使用者将向Access Token URL发起请求,将上步授权的Request Token换取成Access Token。请求的参数:
F. OAuth服务提供商同意使用者的请求,并向其颁发Access Token与对应的密钥,并返回给使用者。
G. 使用者以后就可以使用上步返回的Access Token访问用户授权的资源。
注:Access Token和Access Token Secret永远不会过期,直到用户撤销应用授权或腾讯回收您的app访问权限才会失效。
从上面的步骤可以看出,用户始终没有将其用户名与密码等信息提供给使用者(第三方软件),从而更安全。
OAuth相关术语
了解认证流程后,我们顺便了解下OAuth的一些术语的定义:
OAuth相关的三个URL:
Request Token URL: 获取未授权的Request Token服务地址;
User Authorization URL: 获取用户授权的Request Token服务地址;
Access Token URL: 用授权的Request Token换取Access Token的服务地址;
OAuth相关的参数定义:
oauth_consumer_key: 使用者的ID,OAuth服务的直接使用者是开发者开发出来的应用。所以该参数值的获取一般是要去OAuth服务提供商处注册一个应用,再获取该应用的oauth_consumer_key。
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。
OAuth HTTP响应代码:
HTTP 400 Bad Request 请求错误
Unsupported parameter 参数错误
Unsupported signature method 签名方法错误
Missing required parameter 参数丢失
Duplicated OAuth Protocol Parameter 参数重复
HTTP 401 Unauthorized 未授权
Invalid Consumer Key 非法key
Invalid / expired Token 失效或者非法的token
Invalid signature 签名非法
Invalid / used nonce 非法的nonce
本节课程视频下载:http://u.115.com/file/aq86f6t2
本节课程文档下载:http://download.csdn.net/source/3405201
分享到:
相关推荐
本文详细介绍了在腾讯微博Android客户端开发中如何实现OAuth 1.0a认证机制中的关键部分——请求签名的生成。通过对URL编码方法的特殊处理和HMAC-SHA1算法的具体实现,我们不仅能够确保请求的合法性和安全性,还能更...
这个"安卓Android源码——新浪、腾讯、网易、搜狐微博OAuth认证整合版.zip"压缩包提供了一个完整的解决方案,允许开发者通过OAuth认证方式实现与这四大微博平台的接口对接。OAuth是一种授权框架,它允许第三方应用...
【Android源码——腾讯微博客户端源码.zip】这个压缩包主要包含的是腾讯微博客户端的源代码,对于Android开发者来说,这是一个宝贵的参考资料。通过研究这份源码,开发者可以深入理解一个大型社交应用在Android平台...
本项目“安卓Android源码——精典源码之新浪、腾讯、网易、搜狐微博OAuth认证整合版.zip”提供了这四大中国主流社交媒体平台的OAuth认证集成示例,对于理解和实践Android应用与社交媒体API交互具有很高的参考价值。...
在Android应用开发中,OAuth认证是一种广泛采用的安全机制,用于第三方应用接入如新浪、腾讯、网易和搜狐等社交媒体平台的数据接口。本项目是针对这些知名微博平台的OAuth认证的Android版整合源码,旨在帮助开发者...
这里我们关注的是一个与四大中国主流社交媒体——新浪、腾讯、网易和搜狐微博的OAuth认证整合的Android应用示例。这个压缩包文件"Android参考源码-新浪、腾讯、网易、搜狐微博OAuth认证整合Android版.zip"包含了一个...
这篇文档将深入解析《Android应用源码之新浪、腾讯、网易、搜狐微博OAuth认证整合版》这个项目,它是一个Android毕业设计示例,适合学生学习和理解移动开发App中的OAuth认证流程。OAuth是一种授权框架,广泛应用于...
《Android多功能多重微博...通过对Crowdroid3.2.1源码的深入分析,我们可以学习到Android客户端开发的许多关键技术和最佳实践,这对于提升自己的Android开发技能,理解和构建类似的多功能社交媒体应用具有极大的帮助。
android开发之【腾讯微博android客户端开发】Parameter类和SyncHttp 网友自己写的Android腾讯微薄客户端开发教程 Android 所有Dialog 对话框 大合集 详解【附源码】 Android自定义View研究-- 一个小Demo Android...
综上所述,这个压缩包中的源代码是关于Android应用中集成新浪、腾讯和人人网第三方登录的一个实例,涵盖了OAuth授权、API调用、回调处理等多个技术点,对于想要学习和实践这一功能的开发者来说,是一份宝贵的参考...
微信小程序是腾讯公司推出的一种轻量级应用开发平台,它无需安装,只需在微信内搜索或扫描二维码即可使用,大大降低了用户的使用门槛。微信小程序具备丰富的API接口,支持网络通信、媒体处理、位置服务、设备访问等...