OAuth授权的Java实现详解

由于最近在开发一个关于微博整合的小应用,于是开始接触各大微博平台的开放平台(新浪、搜狐、网易、qq):目前这几大微博的应用开发都采用oauth授权,要访问大部分api都需要oauth方式的身份鉴权。

oauth是什么?

先来简单介绍一下oauth授权协议:oauth协议为用户资源的授权提供了一个安全的、开放而又简易的标准。同时,任何第三方都可以使用oauth认证服务,任何服务提供商都可以实现自身的oauth认证服务,因而oauth是开放的。业界提供了oauth的多种实现如php,javascript,java,ruby等各种语言开发包,大大节约了程序员的时间,因而oauth是简易的。目前互联网很多服务如open api,很多大头公司如google,yahoo,microsoft等都提供了oauth认证服务,这些都足以说明oauth标准逐渐成为开放资源授权的标准。

oauth的授权流程

你所开发的应用需要流程如下:

向应用服务商(新浪、搜狐等微博)请求request_token。

得到request_token后重定向用户到服务商的授权页面。

如果用户选择授权你得应用,用request_token向服务商请求换取access_token。

得到access_token等信息访问受限资源。

而服务商相应的响应如下:

创建request_token返回给应用。

询问用户是否授权此应用。如果用户授权重定向用户至应用页面。

创建access_token并返回给应用。

响应受限资源请求并返回相关信息。

通俗点的说法就是“你拿着你得身份证明(request_token)向服务商申请进入用户家的门钥匙(access_token),服务商询问用户同不同意,如果用户同意服务商就给你进入用户家门的钥匙(access_token),拿到钥匙后你就可以进到用户家里”。

oauth授权的java实现

作为一个开放协议目前有很多现成的oauth库可供开发者使用,可以点击这里下载。不过有精力有时间的话还是自己去实现一下oauth授权的流程,可以很好的体会oauth认证协议的原理。以

下面就是我使用java实现oauth的具体步骤,代码很简单,如果有画蛇添足的地方还望高手一笑而过。

一、获取request_token

首先得准备一下参数及其来源:

oauth_consumer_key —— 注册应用后由应用服务商提供

consumer_secret —— 注册应用后由应用服务商提供

oauth_callback —— 用户授权后的返回地址

oauth_nonce —— 随机字符串,须保证每次都不同

oauth_timestamp —— 时间戳

oauth_signature_method —— 签名base string 的方法,目前支持 hmac-sha1

oauth_version —— oauth协议版本

还需要下面三个请求地址(这些地址任何一个提供oauth的服务商都会提供给你,看下api文档就会找到):

requst_token_url —— 上面第1步中的请求地址

authorize_url —— 上面第2步的请求地址

access_token_url —— 上面第3步的请求地址

至于如何注册应用,新浪微博点此,网易微博点此,腾讯微博点此,搜狐微博需要你发邮件索取,具体看这里。注册成功后就会获得oauth_consumer_key 和 consumer_secret 两个参数。

oauth_callback 起的作用是当用户授权成功后服务商会把用户重定向到这个网址。

oauth_nonce 是一个随机字符串下面是我的生成代码:

public string set_nonce() {

string base = "abcdefghijklmnopqrstuvwxyz0123456789";

random random = new random();

stringbuffer sb = new stringbuffer();

for (int i = 0; i 关注我收藏该文与我联系


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值