Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1329|回复: 0

[实例教程]android开发之【腾讯微博android客户端开发】OAuth

[复制链接]

该用户从未签到

发表于 2011-10-22 12:52:31 | 显示全部楼层 |阅读模式
腾讯微博是一个由腾讯推出,提供微型博客服务的类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
回复

使用道具 举报

该用户从未签到

发表于 2011-10-22 12:52:36 | 显示全部楼层
顶,我课程设计就做这个了。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-22 12:52:41 | 显示全部楼层
多谢楼主分享
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2011-10-22 12:52:46 | 显示全部楼层
谢谢楼主分享哈
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-22 12:52:56 | 显示全部楼层
虽然不太懂,还是顶!
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-22 12:53:00 | 显示全部楼层
看不懂唉
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-22 12:53:05 | 显示全部楼层
看不明白啊。哪知道是什么啊
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-22 12:53:12 | 显示全部楼层
最近也要做一个像这样的东西啊。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-22 12:53:20 | 显示全部楼层
好好学习一下啊。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-22 12:53:25 | 显示全部楼层
顶了~~~~~~~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-19 05:26 , Processed in 0.450722 second(s), 47 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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