调用原理说明
TOP作为淘宝数据插槽,只要用户按照TOP的规范拼装一个正确的URL,通过HTTP请求到TOP,就能够拿到用户自己需要的数据。调用原理的示意图如下:
3.2使用方式详解
1)参数介绍
API由入参和出参(返回结果)组成,其中入参包含系统级参数和应用级参数。
系统级参数:对于每个API均一致,主要用于加密、标识用户身份、API协议版本等用途。
参数名 | 类型 | 是否必须 | 参数解释 |
method | string | Y | API接口名称 |
session | string | N | TOP分配给用户的SessionKey,如果需要访问用户隐私数据必选。 |
timestamp | string | Y | 时间戳,格式为yyyy-mm-dd HH:mm:ss,例如:2008-01-25 20:23:30。淘宝API服务端允许客户端请求时间误差为10分钟(授权码10分钟有效期)。 |
format | string | N | 可选,指定响应格式。默认xml,目前支持格式为xml,json |
app_key | string | Y | TOP分配给应用的AppKey |
v | string | Y | API协议版本,可选值:2.0。 |
sign | string | Y | API输入参数签名结果 |
sign_method | string | Y | 参数的加密方法选择,可选值是:md5,hmac |
应用级参数:针对API的不同用途,一般应用级参数各不相同,详细参见API文档。
2)签名方法
调用API时,需要将所有入参以及入参值加入签名,即:系统级参数(除去sign)名称、系统级参数值、应用级参数名称、应用级参数值全部加入签名。
I.签名参数串排序
签名时,根据参数名称,将除签名(sign)和图片外所有请求参数按照字母先后顺序排序:key + value .... key + value 。
注:
1、 排序若首字母相同,则对第二个字母进行排序,以此类推。
2、value无需编码。
3、对于非必选参数,如果没有value值,也可不参与签名。
例如:将“foo=1,bar=2,baz=三” 排序为“bar=2,baz=三,foo=1”参数名和参数值链接后,得到拼装字符串bar2baz三foo1
II.签名算法
淘宝同时支持md5和hmac两种加密方式
? md5加密方法:
选择md5加密方式,系统级参数sign_method=md5;
将注册应用时得到的密钥(AppSecret)同时拼接到参数字符串头、尾部进行md5加密,再转化成大写,
格式是:byte2hex (md5(AppSecrekey1value1key2value2... AppSecre))。
? hmac加密方法::
选择hmac加密方式,系统级参数sign_method=hmac;
用hmac的md5方式,只需在排序后的字符串头部加入AppSecre,签名后再转化成大写,格式是:byte2hex (hmac(AppSecre key1value1key2value2...))。
注:hex为自定义方法,JAVA中md5是对字节数组加密,加密结果是16字节,我们需要的是32位的大写字符串。
III.签名实例
调用API:taobao.item.get,使用appkey=test;appsecret=test
使用系统默认md5为例,因为各语言语法不一致,以下实例只体现逻辑,输入参数为:
系统级参数 | 应用级参数 |
method=taobao.item.get timestamp=2010-06-20 17:51:30 format=xml app_key=test v=2.0 | fields=desc nick=测试帐号 num_iid= 5159315527 sign_method=md5 |
? 第一步:按照参数名称升序排列
app_key=test
fields=desc
format=xml
method=taobao.item.get
num_iid= 5159315527
nick=测试帐号
sign_method=md5
timestamp=2010-06-20 17:51:30
v=2.0
? 第二步:生成sign
拼装字符串:连接参数名与参数值,并在首尾加上app_secret(这里假设appsecret=test)值:
testapp_keytestfieldsdescformatxmlmethodtaobao.item.getnum_iid5159315527nick测试帐号sign_methodmd5timestamp2010-06-20 17:51:30v2.0test得到32位大写md5值: C759772107FB3FD90ACC76BC5831BB96
3)发送http请求
拼装URL:将所有参数值转换为UTF-8编码,然后进行拼装。
例如:
http://gw.api.taobao.com/router/rest?app_key=test&fields=desc&format=xml&method=taobao.item.get&num_iid=5159315527&nick=%E6%B5%8B%E8%AF%95%E8%B4%A6%E5%8F%B7&sign_method=md5&sign=C759772107FB3FD90ACC76BC5831BB96 ×tamp=2010-06-20+17%3A51%3A30&v=2.0
范例中,http://gw.api.taobao.com/router/rest为API调用入口。
正式环境:http://gw.api.taobao.com/router/rest
沙箱环境:http://gw.api.tbsandbox.com/router/rest
注:淘宝沙箱测试环境是淘宝开放平台(TOP)提供给独立软件开发商的测试环境。沙箱环境模拟线上真实的淘宝环境,淘宝商家可以在沙箱环境中完全仿真测试TOP接口的功能,迷你淘宝环境地址:http://mini.tbsandbox.com/
http://open.taobao.com/doc/detail.htm?spm=1.400153.313747.18&id=101207