## 授权说明
应用程序可通过调用速卖通开放平台提供的API获取到速卖通的会员、交易等数据,因为涉及隐私,在使用前必须获得速卖通会员的授权,方可调用API(公开数据除外),而access_token则做为用户唯一的授权标识。
速卖通开放平台采用OAuth 2.0作为授权协议,授权流程可以简单归纳为:
(1)获取临时令牌;
(2)用临时令牌换取长时令牌以及访问令牌;
(3)访问令牌过期后用长时令牌刷新访问令牌。
关于**临时令牌**、**访问令牌**以及**长时令牌**的介绍请参考下一节
### 概念介绍展开
### 授权分类
注意:请根据自己APP的情况选择对应的授权方式,如果使用了错误的授权方式可能给您APP的使用带来不便
**1、WEB端授权**
第三方开发者提供的app属于网页应用,可以自用或者自行售卖,用户直接在浏览器中输入app入口地址即可访问,那么这样的app就要采用WEB授权方式。
**2、客户端授权**
第三方开发者提供的app属于客户端应用,用户需要下载应用到本地客户端才能使用,那么这样的app就要采用客户端授权方式。
### WEB端授权流程详解隐藏
授权及使用授权时序图
![](http://gw.api.alibaba.com/image/cn/serverAuthProcess.png)
授权流程
如果已经授权并且得到refreshToken,那么可以参考[refreshToken换取accessToken流程详解](http://gw.api.alibaba.com/dev/doc/intl/sys_auth.htm?ns=aliexpress.open#exchangeAccessToken)一节;如果是首次授权,那么授权流程如下:
**1) 用户使用app,访问在速卖通的隐私数据**
**2) app发起授权请求**
~~~
http://authhz.alibaba.com/auth/authorize.htm?client_id=xxx&site=aliexpress&redirect_uri=YOUR_REDIRECT_URL&state=YOUR_PARM&_aop_signature=SIGENATURE
a) client_id:app注册时,分配给app的唯一标示,又称appKey
b) site:site参数标识当前授权的站点,直接填写aliexpress
c) redirect_uri: app的入口地址,授权临时令牌会以queryString的形式跟在该url后返回
d) state:可选,app自定义参数,回跳到redirect_uri时,会原样返回
e) aop_signature:签名
参数签名(_aop_signature)为所有参数key + value 字符串拼接后排序,把排序结果拼接为字符串data后通过bytesToHexString(HAMC-RSA1(data, appSecret))计算签名。 验证签名的方式为对参数执行同样的签名,比较传入的签名结果和计算的结果是否一致,一致为验签通过。
注:只有客户端和WEB端授权流程发起授权请求这一步使用参数签名串组装规则,只用url请求参数作为签名因子;其他签名均需加入urlPath作为额外因子(见API签名串组装规则)。
~~~
**3) 用户输入用户名密码,并确认授权**
**4) 返回临时授权码code给app**
具体返回方式,参照redirect_uri说明
**5) 使用code获取令牌**
~~~
https://gw.api.alibaba.com/openapi/http/1/system.oauth2/getToken/YOUR_APPKEY?grant_type=authorization_code&need_refresh_token=true&client_id= YOUR_APPKEY&client_secret= YOUR_APPSECRET&redirect_uri=YOUR_REDIRECT_URI&code=CODE
注:此接口必须使用POST方法提交;必须使用https
getToken接口参数说明:
a) grant_type为授权类型,使用authorization_code即可
b) need_refresh_token为是否需要返回refresh_token,如果返回了refresh_token,原来获取的refresh_token也不会失效,除非超过半年有效期
c) client_id为app唯一标识,即appKey
d) client_secret为app密钥
e) redirect_uri为app入口地址
f) code为授权完成后返回的一次性令牌
g) 调用getToken接口不需要签名
注:如果超过code有效期(2分钟)或者已经使用code获取了一次令牌,code都将失效,需要返回第二步重新获取code
~~~
**6) 返回令牌**
getToken返回结果:{"aliId":"8888888888","resourceOwner":"xxx","expires_in":"36000","access_token":"8795258a-6c8f-43a5-b8d0-763631edb610","refresh_token":"8795258a-6c8f-43a5-b8d0-763631edb610","refresh_token_timeout":"20121222222222+0800"}
说明:resource_owner为登录id,aliId为阿里巴巴集团统一的id,refresh_token_timeout表示refreshToken的过期时间
**7) 使用令牌访问用户隐私数据**
例如访问以下api:http://gw.api.alibaba.com/openapi/param2/1/aliexpress.open/api.findAeProductById/1?productId=xxx&access_token=ACCESS_TOKEN&_aop_signature=SIGENATURE
签名示例见[API签名规则](http://gw.api.alibaba.com/dev/doc/intl/sys_signature.htm?ns=aliexpress.open#apiRule)
### refreshToken换取accessToken流程详解隐藏
换取accessToken流程
如果refreshToken有效并且accessToken已经过期(超过10小时),那么可以使用refresh_token换取access_token,不用重新进行授权,然后访问用户隐私数据。
注意:如果refreshToken已经超过了半年的有效期,用户修改密码,用户订购到期或者用户通过[取消授权工具](http://authhz.alibaba.com/auth/intl/my.htm)取消了对app的授权,那么都需要用户重新授权获取refreshToken
~~~
换取accessToken的url示例如下:
https://gw.api.alibaba.com/openapi/param2/1/system.oauth2/getToken/YOUR_APPKEY
请求参数如下:
grant_type=refresh_token&client_id=YOUR_APPKEY&client_secret=YOUR_APPSECRET&refresh_token=REFRESH_TOKEN
注:此接口必须使用POST方法提交;必须使用https
a) 此处grant_type参数必须为refresh_token,表示通过refreshToken换取accessToken,而不是通过临时code换取
b) 调用getToken接口时不需要签名
~~~
### 换取新的refreshToken流程详解隐藏
换取refreshToken流程
如果当前时间离refreshToken过期时间在30天以内,那么可以调用postponeToken接口换取新的refreshToken;否则会报错。
注意:有自动功能的应用(用户不进入应用主页也能使用第三方应用,因为在应用后台可以自动调用api处理用户数据,如自动重发类的应用)才需要调用此接口。如果没有自动功能,那么不需要调用,因为用户必须在应用主页操作才能获取以及修改用户数据,所以即使refreshToken过期了,用户再次通过应用市场进入应用主页时授权一次即可
~~~
换取refreshToken的url示例如下:
https://gw.api.alibaba.com/openapi/param2/1/system.oauth2/postponeToken/YOUR_APPKEY
请求参数如下:
client_id=YOUR_APPKEY&client_secret=YOUR_APPSECRET&refresh_token=REFRESH_TOKEN&access_token=ACCESS_TOKEN
返回结果类似getToken的返回结果:
{"aliId":"8888888888","resource_owner":"xxx","memberId":"xxxxxxx","expires_in":"36000","refresh_token":"479f9564-1049-456e-ab62-29d3e82277d9","access_token":"f14da3b8-b0b1-4f73-a5de-9bed637e0188","refresh_token_timeout":"20121222222222+0800"}
注:此接口必须使用https,get和post都行
a) 调用postponeToken接口需要授权,所以必须带上access_token参数
b) 调用postponeToken接口时不需要签名
c) refresh_token参数表示当前使用的refreshToken,如果refreshToken的有效期和当前时间的差值小于30天,那么调用此接口后当前使用的refreshToken失效,返回一个新的refreshToken
~~~
- 首页
- 系统说明
- APP接入说明
- 授权说明
- 签名规则
- API调用说明
- SDK使用说明
- 常见问题
- 测试工具
- 基本类型说明
- 物流
- 读取下一级别的地址信息
- 获取中国省份
- 批量获取线上发货标签
- 修改声明发货
- 获取线上物流发货邮政小包订单及国际物流运单号信息
- 获取线上发货标签
- 根据订单号获取线上发货物流方案
- 创建线上发货物流订单
- 获取中邮小包支持的国内快递公司信息
- 列出平台所支持的物流服务
- 声明发货
- 查询物流追踪信息
- 中国地址信息
- 物流订单的地址信息
- 地址信息
- 取消物流订单返回信息
- Money
- 运单号面单打印请求参数
- 运单号面单PDF打印查询参数
- 物流追踪详细信息
- 物流方式
- 物流订单信息
- 线上发货物流方式
- 创建物流订单结果信息
- 国内物流方式信息
- 物流订单申报产品信息
- 会员服务
- 查询会员账户等级
- 买家等级查询结果
- 纠纷
- 获取保修服务数据
- 获取生效保修信息
- 根据主订单号查询纠纷
- 根据主订单号查询保修数据
- 纠纷中卖家新增订单留言
- 卖家提交纠纷仲裁
- 卖家确认收货
- 卖家放弃退货申请
- 卖家拒绝纠纷
- 卖家同意纠纷
- 纠纷图片上传
- 根据纠纷ID查询纠纷详情
- 查询纠纷列表信息
- 保修服务数据
- 保修生效数据
- 保修详情数据
- 纠纷操作结果
- 纠纷List返回对象
- 纠纷detail结果
- 纠纷详情
- 纠纷信息
- 纠纷处理过程
- 纠纷协商方案
- 货币信息
- 货币单位
- limitRefundAmount
- 消息推送
- 查询式获取失败的消息列表
- 失败消息批量确认
- 游标式获取失败的消息列表
- 推送消息分页
- 推送消息
- 数据
- 查询商品交易表现
- 查询商品每日浏览量
- 查询商品每日加入购物车数据
- 查询商品每日被曝光数据
- 查询商品每日销量数据
- 查询商品每日收藏数量
- 公共
- 查询速卖通平台公告信息
- 查询速卖通服务市场公告信息
- 查询开放平台公告信息
- QueryListResult
- 公告接口返回结果
- 公告信息
- 平台消息查询参数
- 营销
- 获取指定活动详细信息
- coupon活动查询
- 评价
- 卖家对未评价的订单进行评价
- 查询待卖家评价的订单信息
- 站内信
- 订单留言更新处理状态(NEW)
- 订单留言打标签(NEW)
- 根据买卖家loginId查询站内信(NEW)
- 订单留言获取关系列表(NEW)
- 订单留言更新已读(NEW)
- 订单留言查询详情列表(NEW)
- 新增站内信/订单留言(NEW)
- 订单留言详情结果集
- 订单留言图片
- 订单留言附属信息
- 更新插入操作返回结果
- 订单留言列表结果集
- 交易
- 延长买家收货时间
- 订单交易信息查询
- 订单收货信息查询
- 订单基础信息查询
- 订单列表简化查询
- 未放款订单请款
- 订单请款时上传证明附件
- 查询订单放款信息
- 交易订单详情查询
- 交易订单列表查询
- 订单放款信息
- 订单放款元素信息
- 订单放款子元素信息
- 订单基础信息
- 订单交易信息
- 订单交易子订单信息
- 延长买家收货结果
- 请求放款结果
- 简单订单列表信息
- 简单订单元素信息
- 订单详情信息
- 简单订单产商品信息
- 订单详情子订单信息
- 订单列表信息
- 订单元素信息
- 订单商品信息
- 订单详情纠纷信息
- 订单详情放款信息
- 操作日志信息
- 个人基本信息
- 地址信息
- 订单详情物流信息
- 订单详情留言信息
- 订单详情商品信息
- 货币信息
- 订单详情退款信息
- Currency
- 上传图片
- 上传图片到临时目录(推荐使用)
- 上传图片到临时目录
- 图片银行
- 上传图片到图片银行(推荐使用)
- 根据path查询图片信息
- 获取图片银行信息
- 删除未被引用图片
- 上传图片到图片银行
- 查询图片银行分组信息
- 图片银行列表分页查询
- 图片记录对象(api.queryPhotoBankImageByPaths)
- 图片分组对象
- 图片记录对象(api.listImagePagination)
- 分页查询对象
- 产品
- 查询商品状态
- 商品违禁词查询
- 编辑SKU的可售库存
- 编辑商品单个SKU库存
- 编辑商品单个SKU价格
- 编辑商品的多语言标题或详描
- 获取卖家可用橱窗数
- 创建产品分组
- 根据类目id获得适用的尺码表信息列表
- 修改商品所引用的尺码模板
- 卖家橱窗使用详情查询
- 编辑商品类目属性
- 商品分组设置
- 查询指定商品ID所在产品分组
- 获取当前会员的产品分组
- 编辑产品类目、属性、sku
- 编辑商品的单个字段
- 获取属性需要优化的商品列表
- 通过淘宝产品的url进行单品认领
- 商品橱窗设置
- 服务模板查询
- 获取淘宝原始产品信息
- 查询信息模板列表
- 查询单个信息模板详情
- 商品上架
- 商品下架
- 修改编辑商品信息
- 获取单个产品信息
- 商品列表查询接口
- 发布产品信息
- 上架商品错误详情
- 多媒体信息
- 商品信息
- 淘代销商品对象
- 淘代销商品简要信息
- 产品分组
- 产品子分组
- 产品分组ID对象
- 商品违禁词对象
- 淘代销商品信息
- 商品信息模块对象
- 商品橱窗信息
- 商品基本信息
- 尺码模版信息对象
- AeopProductOptimizeResult
- AeopOptimizeProduct
- 淘代销认领结果对象
- AeopAEProductDisplayDTO
- 商品类目属性对象
- SKU属性集对象
- SKU对象
- 运费
- 用户运费模板列表信息
- 运费计算
- 通过模板ID获取运费模板详情
- 运费模板详细内容
- 运费模板自定义按件或按重内容
- 运费模板按重自定义内容
- 运费计算结果
- 运费模板基础信息内容
- 运费模板自定义标准内容
- 运费模板ID及名称及是否为默认
- 类目
- 查询指定类目适合的尺码模板
- 判断发布类目尺码模板是否必须
- 根据发布类目id、父属性路径(可选)获取子属性信息
- 关键词推荐发布类目
- 获取单个类目信息
- 获取指定类目下子类目信息
- 发布属性描述信息(一层)
- 发布属性值详细信息(一层)
- 发布属性描述信息(二层)
- 发布属性值详细信息(二层)
- 发布属性描述信息(三层)
- 发布属性单位
- 发布属性值详细信息(三层)
- 发布类目描述信息
- AeAttributeDTO