用户授权介绍


更新时间: 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>{\&quot;w2_valid\&quot;:1437127235362,\&quot;r1_valid\&quot;:1437129035362,\&quot;sp\&quot;:\&quot;tbUIC\&quot;,\&quot;r2_valid\&quot;:1437127235362,\&quot;w1_valid\&quot;:1437129035362,\&quot;locale\&quot;:\&quot;zh_CN\&quot;,\&quot;user_id\&quot;:\&quot;2021891722\&quot;,\&quot;expire_time\&quot;:1468663236386,\&quot;refresh_token\&quot;:\&quot;50003400e34kgvzoweD0nUeMwB0ueXeDQiOVxdkmKpaeVW18619220EhyAKWUVQYqLE2\&quot;,\&quot;user_nick\&quot;:\&quot;yexue08\&quot;,\&quot;refresh_token_valid_time\&quot;:1437129035362,\&quot;access_token\&quot;:\&quot;50002400834dMShsDmop3NrEfaozeisCSTGAfbuCl0YdKH15967dafOlxfMa3oYlpO2Q\&quot;}&quot;,     &quot;request_id&quot;: &quot;16sd74g5krf9u&quot;}</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 淘宝子账号