用户授权介绍
更新时间: 2024-08-24
概述
当开放平台的应用需要获取商家或者用户数据(商品、订单信息等),需要引导用户先使用淘宝帐号登录并授权您的应用,用户授权成功平台会返回用户授权码 Sessionkey(即access_token),之后调用接口时传入对应用户的授权码就可以获取到该用户的数据。
以下是关于授权的具体技术实现方案,开发者可以根据需要选择合适的授权方式。
Web网站授权模式
此流程需要您有自己的web服务器,能够保存应用本身的密钥以及状态,可以通过https直接访问淘宝的授权服务器。适用于服务多商家或多用户频繁使用软件的场景。
授权过程分为两个步骤:
1)获取授权码: 通过用户授权获取授权码code。
正式环境:拼接以 https://open.ieasynote.com/authorize 开头的url。
2)获取访问令牌:用上一步获取的 code 和应用密钥(AppSecret)通过POST方式换取accesstoken(即sessionkey)。
正式环境:拼接以 https://open.ieasynote.com/token 开头的url。
第三方应用授权的流程如下所示:
第一步:创建应用
要在您的应用中使用淘宝开放产品的接口能力,您需要先在卖家开放平台(https://open.ieasynote.com/),创建登记您的应用,这里不再详细展开介绍。
第二步:拼接授权URL
// 拼接规则示例:
[https://open.ieasynote.com/authorize?response_type=code&client_id=11111111&redirect_uri=http://www.yourcompany.com&state=1212&view=web]
示例中的 client_id 和 redirect_uri 需要替换成您创建应用的实际数据。
client_id :传入appkey,查找路径:【[控制台](https://open.ieasynote.com/console/apps)】- 【我的应用】;
redirect_uri :传入回调地址, 查找路径:【[控制台](https://open.ieasynote.com/console/apps)】-【我的应用】
| 名称 | 是否必选 | 参数值 | 参数说明 |
|---|---|---|---|
| client_id | 必选 | 12345678 | Appkey创建应用时获得 |
| response_type | 必选 | code / token | 授权类型 ,值为code / token |
| redirect_uri | 必选 | 填写应用注册时回调地址域名 | redirect_uri 指的是应用发起请求时,所传的回调地址参数,在用户授权后应用会跳转至redirect_uri。要求与应用注册时填写的回调地址域名一致或顶级域名一致 |
| state | 可选 | 可自定义,如1212等 | 维持应用的状态,传入值与返回值保持一致 |
| view | 可选 | 可选web / tmall / wap其中一种,默认为web | Web 对应PC端(淘宝logo)浏览器页面样式;Tmall 对应天猫的浏览器页面样式;Wap 对应无线端的浏览器页面样式 |
| force_auth | 可选 | true,如force_auth=true | 在授权url中加 force_auth=true,不管授权是否有效都会弹授权页面,用户登陆授权以后有效时间会刷新 |
| from_site | 可选 | fuwu,如from_site=fuwu | 在授权url加from_site=fuwu,用户已登录且授权有效情况下会直接跳转回调,不会弹授权页面,授权时间不刷新 |
第三步:引导用户登录授权
引导用户通过浏览器访问以上授权url,将弹出如下登录页面。用户输入淘宝帐号、密码,点“授权并登录”按钮,即可进入授权页面;若已是登录状态,点“授权并登录'按钮,即可登录授权页面。 此步骤,用哪个商家的淘宝账号登录授权,那获取的 sessionkey只能用来获取该商家的数据,不能获取其他商家数据。
第四步:获取Code
用户授权登录后,TOP会将授权码 code 返回到回调地址URL,开发者可以获取并使用该 code 换取 access_token。
1)code 有效期是30分钟,超过30分钟未使用,需要重新按授权流程获取;
2)code 只能使用一次,使用后 需要重新按授权流程获取。
第五步:换取access_token
方式1 调用API接口获取(推荐) 通过 taobao.top.auth.token.create API接口获取 access_token(授权令牌). 授权有效期通过 expires_in 返回,请自行保存该数据,授权到期前,重新授权获取新的sessionkey,避免使用过期的sessionkey调用接口导致isv报错。(详细介绍见下文名词解释中“授权时长”) ,也可以通过 授权session解析工具,查询sessionkey有效期和授权用户信息,提前判断。 API调用服务请参考《API调用方法详解》,返回参数结果示例如下。
<top_auth_token_create_response>
<token_result>{\"w2_valid\":1437127235362,\"r1_valid\":1437129035362,\"sp\":\"tbUIC\",\"r2_valid\":1437127235362,\"w1_valid\":1437129035362,\"locale\":\"zh_CN\",\"user_id\":\"2021891722\",\"expire_time\":1468663236386,\"refresh_token\":\"50003400e34kgvzoweD0nUeMwB0ueXeDQiOVxdkmKpaeVW18619220EhyAKWUVQYqLE2\",\"user_nick\":\"yexue08\",\"refresh_token_valid_time\":1437129035362,\"access_token\":\"50002400834dMShsDmop3NrEfaozeisCSTGAfbuCl0YdKH15967dafOlxfMa3oYlpO2Q\"}", "request_id": "16sd74g5krf9u"}</token_result>
</top_auth_token_create_response>
{
"top_auth_token_create_response":{
"token_result":"{\\"w2_valid\\":1437127235362,\\"r1_valid\\":1437129035362,\\"sp\\":\\"tbUIC\\",\\"r2_valid\\":1437127235362,\\"w1_valid\\":1437129035362,\\"locale\\":\\"zh_CN\\",\\"user_id\\":\\"2021891722\\",\\"expire_time\\":1468663236386,\\"refresh_token\\":\\"50003400e34kgvzoweD0nUeMwB0ueXeDQiOVxdkmKpaeVW18619220EhyAKWUVQYqLE2\\",\\"user_nick\\":\\"yexue08\\",\\"refresh_token_valid_time\\":1437129035362,\\"access_token\\":\\"50002400834dMShsDmop3NrEfaozeisCSTGAfbuCl0YdKH15967dafOlxfMa3oYlpO2Q\\"}\", \"request_id\": \"16sd74g5krf9u\" }"
}
}
换取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 |
| taobao_open_uid | String | SDJFKLSJFlJSDKF | 淘宝账号对应openUid加密 |
| sub_taobao_user_id | String | 2343535 | 淘宝子账号对应id |
| sub_taobao_user_nick | String | 测试账号test:123 淘宝子账号 |