分享

淘宝开放平台

 quasiceo 2014-10-08

请输入您要搜索的内容

oAuth2.0登录授权

更新时间 . 2012/03/20

无线买家应用oauth2.0登录授权改造介绍

为了用户数据的安全,mtop对无线买家应用的授权进行改造。自2011年10月25日起,新创建的应用已开始使用新的授权机制(论坛公告)。而在此之前创建的应用也将陆续进行改造,到2012年2月底将全部改造完毕。

无线买家应用新的登录授权启用oauth2.0协议

无线买家应用授权方案针对appkey的应用标签为“无线买家应用”,开发者可以在开发者后台查看,参考网址:http://my.open.taobao.com/app/app_list.htm


无线买家应用授权改造流程

建议:

在修改线上环境的程序前,重新申请无线买家应用的appkey,使用oauth2.0授权方法,测试通过之后,再修改线上环境的程序。

Oauth2.0详细授权文档

1.      Server-side flow

2.      Client-side flow

3.      Native Application

 

备注:

 

此文档中在请求参数中加上view=wap则是针对无线买家应用,没有加上这个参数默认对于pc机器。

 

参数中的state规则是:如果应用请求传了state,则授权服务器原样返回state.

 

当应用发起请求时,可以传redirect_uri参数,同时应用在注册时,本身也有个callback地址。这两个的规则是:

1.     对于Server-side flow,redirect_uri是必传参数,并且redirect_uri与callback是全域名匹配。

2.     对于Client-side flow,如果传了redirect_uri,则返回到redirect_uri,并且与callback全域名匹配,如果没有传redirect_uri,则不做校验,返回到淘宝默认授权返回页面。

3.     在不可预知错误的情况下,返回到默认错误页面。

 

一、      Server-side flow

此流程要求ISV应用有Web Server应用,能够保存应用本身的密钥以及状态,可以通过https直接访问淘宝的授权服务器。

授权过程分为两个步骤:

1. 通过用户授权获取授权码Code;

2. 用上一步获取的Code和应用密钥(AppSecret)通过Https Post方式换取Token。

 

1.     通过用户授权获取授权码Code,将用户界面引导到https://oauth.taobao.com/authorize

需要的参数如下:

名称

是否必须

描述

response_type

此流程下,该值固定为code

client_id

即创建应用时的Appkey

redirect_uri

应用的回调地址,必须和创建应用时的callback主域名匹配。

state

状态参数,由应用自定义,颁发授权后会原封不动返回

scope

否(短授权为必须)

权限参数,API组名串,多个组名时,用“,”分隔,目前支持参数:promotion,item,usergrade

view

授权页面类型, wap(无线端)

 

例如:https://oauth.taobao.com/authorize?response_type=code&client_id=12439149&redirect_uri=http://www./2/&state=1212&scope=item,promotion,item,usergrade

用户登录后,会出现授权页面:

此时用户可以选择“授权“ 或 ”取消“,

若用户选择“取消“,则页面跳转至应用的回调地址,同时返回如下错误信息:

error=access_denied

error_description=authorize%20reject

若用户选择“授权“,则页面跳转至应用的回调地址,同时返回授权码code以及state参数。

2. 用上一步获取的Code和应用密钥(AppSecret)通过Https Post方式换取Token(访问令牌,即Sessionkey),TOP会以json文本的形式返回响应的值。

需要的参数如下:

名称

是否必须

描述

grant_type

授权类型,authorization_code

code

授权请求中的授权码

redirect_uri

应用的回调地址

client_id

即Appkey

client_secret

即Appsecret

view

授权页面类型, wap(无线端)

代码示例(以Java为例):

 

TOP返回的参数如下:

名称

描述

access_token

用户授权令牌,等价于Sessionkey

token_type

授权令牌类型,暂做保留参数备用

expires_in

授权令牌有效期,以秒为单位

refresh_token

刷新令牌,当授权令牌过期时,可以刷新access_token,如果有获取权限则返回

re_expires_in

刷新令牌的有效期

hra_expires_in

高危API有效期(短授权相关)

taobao_user_id

用户ID(子账号相关)

taobao_user_nick

用户nick

taobao_sub_user_id

子账号用户ID

taobao_sub_user_nick

子账号用户nick

mobile_token

无线端的ssid(对应于view=wap)

代码示例(以Java为例):

二、    Client-side flow

此流程适用于没有独立服务器的应用,但是能够借助浏览器或者JS脚本访问授权服务器。

授权过程只有一个步骤:请求授权服务器获取token(访问令牌)

引导用户授权,引导到如下页面,并附加相应的参数:https://oauth.taobao.com/authorize

需要的参数如下:

名称

是否必须

描述

response_type

此流程下,该值固定为token

client_id

即创建应用时的Appkey

redirect_uri

可选

应用的回调地址, 如果有值,则回调到这个地址,没有就到默认地址。

state

状态参数,由应用自定义,颁发授权后会原封不动返回

scope

否(短授权为必须)

权限参数,API组名串,多个组名时,用“,”分隔,目前支持参数:promotion,item,usergrade

view

授权页面类型, wap(无线端

 例如:https://oauth.taobao.com/authorize?response_type=token&client_id=12439149&redirect_uri=http://www./2/&state=1212&scope=item 用户登录后,页面会跳转到用户授权页面:

此时用户可以选择“授权“ 或 ”取消“,

若用户选择“取消“,则页面跳转至应用的回调地址,同时返回如下错误信息:

error=access_denied

error_description=authorize%20reject

若用户选择“授权“,则页面跳转至应用的回调地址,同时返回访问令牌token(即Sessionkey):

TOP返回的参数如下:

名称

描述

access_token

用户授权令牌,等价于Sessionkey

token_type

授权令牌类型,暂做保留参数备用

expires_in

授权令牌有效期,以秒为单位

refresh_token

刷新令牌,当授权令牌过期时,可以刷新access_token,如果有获取权限则返回

re_expires_in

刷新令牌的有效期

hra_expires_in

高危API有效期(短授权相关)

mobile_token

无线端的ssid(对应于view=wap)

taobao_user_id

用户ID

taobao_user_nick

用户nick

taobao_sub_user_id

子账号用户ID

taobao_sub_user_nick

子账号用户nick

state

状态参数,由应用自定义,颁发授权后会原封不动返回

示例如下:

https://oauth.taobao.com/oauth2?view=wap#access_token=6100329b1ad77ce096bf7b8897783e3da97e11977b5da7e263664221&token_type=Bearer&expires_in=86400&refresh_token=61016299bf65869db07c936a95ca54bbdac031755ed32ec263664221&re_expires_in=15552000&hra_expires_in=1800&mobile_token=cb64e836fbc6276f7820a9c548ae98f9&taobao_user_id=263664221&taobao_user_nick=%E5%95%86%E5%AE%B6%E6%B5%8B%E8%AF%95%E5%B8%90%E5%8F%B717&state=1212

三、    Native Application

此流程适合客户端应用,同时应用无法与浏览器交互,但是可以外调用浏览器。

也就是说,用户能从浏览器获取授权码,同时,粘帖到应用程序中去。这需要设置redirect_uri=urn:ietf:wg:oauth:2.0:oob

请求示例如下:

https://oauth.taobao.com/authorize?response_type=code&client_id=12439149&redirect_uri=urn:ietf:wg:oauth:2.0:oob&state=1212&scope=item,promotion,item,usergrade

注:此处回调地址固定为redirect_uri=urn:ietf:wg:oauth:2.0:oob

用户完成授权后,页面跳转至:

接下来,用上一步获取的Code和应用密钥(AppSecret)通过Https Post方式换取Token(访问令牌,即Sessionkey),TOP会以json文本的形式返回响应的值。

、   Refreshing an Access Token

用户如果在获取访问令牌时,同时获取到了刷新令牌,当访问令牌过期时,用户可以用刷新令牌刷新,从而延长访问令牌的时间。注意:得使用POST请求进行访问https://oauth.taobao.com/token

请求URL:https://oauth.taobao.com/token?refresh_token=xxx&client_id=12439149&client_secret=xxx&grant_type=refresh_token

需要的参数如下:

名称

是否必须

描述

refresh_token

刷新令牌

client_id

即创建应用时的Appkey

client_secret

应用密钥

grant_type

取值refresh_token

 示例:https://oauth.taobao.com/token?refresh_token=xxx&client_id=12439149&client_secret=xxx&grant_type=refresh_token

TOP返回的参数如下:

名称

描述

access_token

用户授权令牌,等价于Sessionkey

token_type

授权令牌类型,暂做保留参数备用

expires_in

授权令牌有效期,以秒为单位

refresh_token

刷新令牌,当授权令牌过期时,可以再次刷新access_token,

re_expires_in

刷新令牌的有效期

taobao_user_id

用户ID

taobao_user_nick

用户nick

无线买家应用oauth2.0登录授权文档下载

无线买家应用oauth2.0登录授权页面

开发者后台切换授权流程

1、 登录开发者中心

从淘宝开放平台首页:http://open.taobao.com/index.htm,进入开发者中心

      

2、 点击“应用管理”的“应用列表”


3、 点击下方的“升级到新授权时长”


 

FAQ (0)我的提问

淘宝开放平台 网站合作 xtao#taobao.com 其他咨询 top#taobao.com 友情链接: 监控宝 监控魔方

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多