淘宝开放平台
展开全文
登录授权
如果您的应用和淘宝开放平台对接时需要获取用户隐私数据(如商品、订单等),为保证用户数据的安全与隐私,您的应用需要取得用户的授权,即获取访问用户数据的授权令牌 Access Token (即原来的SessionKey)。这种情况下,您的应用需要引导用户完成使用淘宝帐号“登录授权”的流程。该流程采用国际通用的OAuth2.0标准协议作为用户身份验证与授权协议,支持网站、手机客户端、桌面客户端。
目前淘宝OAuth2.0服务支持采用两种方式获取Access Token(授权令牌),即 Server-side flow 和 Client-side flow ,详见如下说明。
注:Taobao ID(淘帐号)产品不得用于阿里巴巴集团非官方渠道为淘宝买家提供淘宝会员类服务(如:订单查询、物流追踪 等),一旦发现违规使用,开放平台将立即收回该appkey的Taobao ID使用权限。
特别注意
此文档描述的授权页面仅适用于PC端,如果您的页面是在手机淘宝/天猫客户端中被访问,请参考这里。如果您的页面是在H5手机浏览器中被访问,请参考这里。
一、Server-side flow
此流程要求ISV应用有Web Server应用,能够保存应用本身的密钥以及状态,可以通过https直接访问淘宝的授权服务器。
1、请求入口地址
1)获取授权码(code)
正式环境:oauth.taobao/authorize
沙箱环境:/authorize
2)获取访问令牌(access_token)
正式环境:oauth.taobao/token
沙箱环境:/token
2、授权操作步骤
此处以正式环境获取acccess_token为例说明,如果是沙箱环境测试,需将请求入口地址等相关数据换成沙箱对应入口地址,操作流程则同正式环境一致。
实际进行授权操作时,测试的数据 client_id、client_secret、redirect_uri 均需要根据自己创建的应用实际数据给予替换,不能拿示例中给出的值直接进行测试,以免影响实际测试效果。下图为Server-side flow 授权方式流程图,以下按流程图逐步说明。
1)拼接授权url
拼接用户授权需访问url ,示例及参数说明如下:
oauth.taobao/authorize?response_type=code&client_id=23075594&redirect_uri=/2/&state=1212&view=web
参数说明 | |||
名称 | 是否必选 | 参数值 | 参数释义 |
client_id | 必选 | 等同于appkey,创建应用时获得。 | |
response_type | 必选 | code | 授权类型 ,值为code。 |
redirect_uri | 必选 | 可填写应用注册时回调地址域名。 | redirect_uri指的是应用发起请求时,所传的回调地址参数,在用户授权后应用会跳转至redirect_uri。要求与应用注册时填写的回调地址域名一致或顶级域名一致 。 |
state | 可选 | 可自定义,如1212等; | 维持应用的状态,传入值与返回值保持一致。 |
view | 可选 | web,可选web、tmall或wap其中一种,默认为web。 | Web对应PC端(淘宝logo)浏览器页面样式;Tmall对应天猫的浏览器页面样式;Wap对应无线端的浏览器页面样式。 |
2)引导用户登录授权
引导用户通过浏览器访问以上授权url,将弹出如下登录页面。用户输入账号、密码点“登录”按钮,即可进入授权页面。
3)获取code
上图页面,若用户点“授权”按钮后,TOP会将授权码code 返回到了回调地址上,应用可以获取并使用该code去换取access_token;
若用户未点授权而是点了“取消”按钮,则返回如下结果,其中error为错误码,error_description为错误描述。分别如下图所示:
说明:
可发布服务市场(fuwu.taobao)的应用,在应用上线后,如购买应用的用户,通过"我的服务--立即使用”访问(下图),系统会自动跳到授权页面(因此这种方式访问应用的,不需要拼接url),只需注意获取code即可。同时返回code时,还会返回通过state传递订购服务相关的信息,类似:
state=versionNo:1;itemCode:xxxxx (versionNo 为应用版本号、itemCode为应用收费代码)
4)换取access_token
方式1(推荐):
通过ate api接口获取access_token(授权令牌)。api服务地址参考//open.taobao/docs/doc.htm?docType=1&articleId=101617&treeId=1
方式2:
利用linux 的curl 命令 获取access_token(授权令牌),如下;对于应用程序,可以参考文档**示例**这里的示例代码。
curl -i -d "code=OxlukWofLrB1Db1M6aJGF8x2332458&grant_type=authorization_code&client_id=23075594&
client_secret=69a1469a1469a1469a14a9bf269a14&redirect_uri=/2/ "oauth.taobao/token
换取access_token请求参数说明 | |||
名称 | 是否必选 | 参数值 | 参数释义 |
client_id | 必选 | 等同于AppKey,创建应用时获得。 | |
client_secret | 必选 | 等同于AppSecret,创建应用时获得。 | |
grant_type | 必选 | authorization_code | 授权类型 ,值为authorization_code |
code | 必选 | 上一步获取code得到 | |
redirect_uri | 必选 | 可填写应用注册时回调地址域名。redirect_uri指的是应用发起请求时,所传的回调地址参数,在用户授权后应用会跳转至redirect_uri。要求与应用注册时填写的回调地址域名一致或顶级域名一致 。 | |
state | 可选 | 可自定义,如1212等;维持应用的状态,传入值与返回值保持一致。 | |
view | 可选 | 可选web、tmall或wap其中一种,Web对应PC端(淘宝logo)浏览器页面样式;Tmall对应天猫的浏览器页面样式;Wap对应无线端的浏览器页面样式。 | |
换取access_token返回值示例
{
"w2_expires_in": 0,
"taobao_user_id": "263685215",
"taobao_user_nick": "%E5%95%86%E5%AE%B6%E6%B5%8B%E8%AF%95%E5%B8%90%E5%8F%B752",
"w1_expires_in": 1800,
"re_expires_in": 0,
"r2_expires_in": 0,
"expires_in": 86400,
"token_type": "Bearer",
"refresh_token": "6200e1909ca29b04685c49d67f5ZZ3675347c0c6d5abccd263685215",
"access_token": "6200819d9366af1383023a19907ZZf9048e4c14fd56333b263685215",
"r1_expires_in": 1800
}
换取access_token返回参数说明 | |||
Key | 类型 | 示例 | 说明 |
access_token | string | 2YotnFZFEjr1zCsicMWpAA | Access token |
token_type | string | Bearer | Access token的类型目前只支持bearer |
expires_in | number | 10(表示10秒后过期) | Access token过期时间 |
refresh_token | string | 2YotnFZFEjr1zCsicMWpAA | Refresh token,可用来刷新access_token |
re_expires_in | number | 10(表示10秒后过期) | Refresh token过期时间 |
r1_expires_in | number | 10(表示10秒后过期) | r1级别API或字段的访问过期时间; |
r2_expires_in | number | 10(表示10秒后过期) | r2级别API或字段的访问过期时间; |
w1_expires_in | number | 10(表示10秒后过期) | w1级别API或字段的访问过期时间; |
w2_expires_in | number | 10(表示10秒后过期) | w2级别API或字段的访问过期时间; |
taobao_user_nick | string | 测试账号 | 淘宝账号 |
taobao_user_id | string | 706388888 | 淘宝帐号对应id |
sub_taobao_user_id | string | 2343535 | 淘宝子账号对应id |
sub_taobao_user_nick | string | 测试账号test:123 | 淘宝子账号 |
二、Client-side flow
发布评论