淘宝API应用开发小试

简介: 无力吐槽淘宝开发平台相关文档的表述清晰度、错误率、各种费解的概念、让人头晕目眩的导航等等。至少能够在几年前就开放众多的API供第三方调用,算得上是有前瞻性的一次重要举措。闲来无事,咱也费心研究了下,有错莫怪我,要怪就怪淘宝文档太不给力。

无力吐槽淘宝开发平台相关文档的表述清晰度、错误率、各种费解的概念、让人头晕目眩的导航等等。至少能够在几年前就开放众多的API供第三方调用,算得上是有前瞻性的一次重要举措。闲来无事,咱也费心研究了下,有错莫怪我,要怪就怪淘宝文档太不给力。

大致是这么个流程:创建应用——开发应用——提交审核——上线使用。

在创建应用前,还得支付宝实名认证。像咱这种基本不网购的人,支付宝的账号密码绑定手机号是啥早忘了。于是用我表妹账号,特别开心的是,表妹已经开了家网点,没几个月,据说小丫头片子已经能月入2K了(利润)。哎,我又想转行了。。。我用我表妹账号,能订阅已经上线的卖家服务,发现很多都是免费而且做的不错的,也有淘宝自己开发的应用,比如量子恒道。

我特地研究了下这个应用,发现单凭现在开放出来的TOPAPI,基本上不能获取该应用所需的数据,比如实时客户访问。结论:第三方只能在较小范围内做做简单业务处理和数据分析,能赚到钱,但想要赚大钱,精致程度如淘宝本土应用,我认为几乎是不可能的事,除非淘宝真的打算将这块蛋糕完全奉献出来。

废话少说,开始创建应用,换句话说就是填写基本信息。

应用分web应用和客户端应用。貌似客户端应用发布后,是通过web下载安装的,而且资质要求很高,我等屌丝只能不关心略过。web应用有个回调URL,其实就是你的web服务站点地址,在沙箱环境管理下,我们可以将回调URL设为localhost以便本机开发测试。

授权协议:若要获取私密数据,需要得到用户授权。默认是OAuth2.0协议。要求先获取授权码,然后通过授权码获取访问凭证和刷新凭证,应用可以通过访问凭证获取用户私密数据,当访问凭证过期时,可以尝试使用刷新凭证重新获取访问凭证,当然刷新凭证也有有效期,过期只能让用户重新授权。

原本使用HttpWebRequest获取凭证,可参看dudu的ASP.NET MVC通过OAuth调用Google API获取用户信息。后来想说学学新概念,改为用httpclient获取,当然过程很坑爹。 

 1 async Task<string> GetToken(string code)
 2 {
 3     WebRequestHandler webRequestHandler = new WebRequestHandler();
 4     webRequestHandler.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(RemoteCertificateValidate);
 5     HttpClient client = new HttpClient(webRequestHandler);
 6     var httpContent = new FormUrlEncodedContent(new Dictionary<string, string>()
 7     {
 8         {"grant_type", "authorization_code"},
 9         {"code", code},
10         {"client_id", "1021489060"},
11         {"client_secret", "sandboxccbc898dce7e6525cca1b1f1c"},
12         {"redirect_uri", "http://localhost:9198"}
13     });
14     string uri = "https://oauth.tbsandbox.com/token";
15     var response = await client.PostAsync(uri, httpContent);
16     return response.Content.ReadAsStringAsync().Result;
17 }

由于淘宝沙箱的证书无效,webRequestHandler.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(RemoteCertificateValidate);忽略证书验证,否则得不到期望的结果,可能会抛异常。await client.PostAsync(uri, httpContent);这句折磨我很久,具体细节可以看我的上一篇博文:async、await在ASP.NET[ MVC]中之线程死锁的故事

下面开始调用API。我们可以直接通过访问WebApi获取Json格式的数据,不过还要转换成实体类神马的太过麻烦,幸好淘宝为几种流行的语言提供了SDK工具包,我屁颠屁颠地下了.net版本,开用。

获取店铺信息:

1 private Shop GetShopInfo(string nick)
2 {
3     ITopClient client = new DefaultTopClient("http://gw.api.tbsandbox.com/router/rest", "1021489060", "sandboxccbc898dce7e6525cca1b1f1c");//实例化ITopClient类
4     ShopGetRequest req = new ShopGetRequest(); //实例化具体API对应的Request类
5     req.Fields = "sid,cid,nick,title";
6     req.Nick = nick;
7     ShopGetResponse rsp = client.Execute(req);//执行API请求并将该类转换为response对象
8     return rsp.Shop;
9 }

DefaultTopClient构造函数的三个参数分别为沙箱API地址(上线使用时请改为正式地址),APPKEY,APPSecret,这两个东西是在创建应用时给到我们的,也有沙箱和正式环境两个版本。Request.Fields表示请求的字段(不同字段访问级别可能不一样,这方面我没去研究),其余属性一般为请求参数,不同API的参数要求请参看对应的文档说明。当Response返回时,会将数据转化成实体类,方便.NET程序访问。

我们也可以将TopApi封装为自己的WebApi供JS请求(猜测未验证:由于众所周知的跨域问题,JS应该不能直接请求TopApi,或者说相当麻烦。不过善良的淘宝也同样提供了JSSDK工具包,具体如何应用请有兴趣的同学研究好告诉我:))。

获取商品列表:

 1 public class ItemController : ApiController
 2 {
 3     public IEnumerable<Item> GetItemsInventory(string sessionKey)
 4     {
 5         ITopClient client = new DefaultTopClient("http://gw.api.tbsandbox.com/router/rest", "1021489060", "sandboxccbc898dce7e6525cca1b1f1c");
 6         ItemsInventoryGetRequest req = new ItemsInventoryGetRequest();
 7         req.Fields = "approve_status,num_iid,title,nick,type,cid,pic_url,num,props,valid_thru,list_time,price,has_discount,has_invoice,has_warranty,has_showcase,modified,delist_time,postage_id,seller_cids,outer_id";
 8         ItemsInventoryGetResponse rsp = client.Execute(req, sessionKey);
 9         return rsp.Items;
10     }
11 }

前台JS就可以如是调用:

 1 $.ajax({
 2     url: '/apis/Item/GetItemsInventory?sessionKey=@ViewData["SessionKey"]',
 3     type: "get",
 4     dataType: "json",
 5     success: function (data) {
 6         ConstructData(data);
 7         $("#grid").kendoGrid({
 8             dataSource: {
 9                 data: data,
10                 pageSize: 15
11             },
12             height:530,
13             scrollable: true,
14             sortable: true,
15             filterable: true,
16             pageable: {
17                 input: true,
18                 numeric: false
19             },
20             columns: [
21                 { field: "Title", title: "商品名称" },
22                 { field: "Price", title: "售价", format: "{0:c}", width: "130px" },
23                 { field: "Num", title: "库存", width: "130px" },
24                 { field: "ListTime", title: "上架时间" },
25                 { field: "DelistTime", title: "下架时间" }
26             ]
27         });
28     }
29 });

这里需要注意,返回的data并不能直接拿过来用。因为淘宝SDK中的.NET实体类加了Serializable特性且属性为自动属性,序列化为Json对象属性名称XXX将变为<XXX>k__BackingField,对这种名称的属性JS只能通过中括号的形式访问,点形式读取属性将读不到,造成有些组件(比如KendoUI的Grid)数据无法绑定。更详细信息可参看C#对 Json的序列化和反序列化会出现“k_BackingField”。

运行程序:

首先会跳到授权界面(如果你的应用不涉及到私密数据的访问,那么可以不考虑这个步骤)。

在大部分浏览器中,由于沙箱地址的证书无效,会导致这一界面显示异常。在Chorme中,可以事先使用用户账号登录mini.taobao(沙箱使用,模拟真实环境),在IE10中干脆就无解。淘宝文档中对这一情况作了一定说明。

授权成功后,转到应用界面:

转载请注明本文出处:http://www.cnblogs.com/newton/archive/2013/05/14/3078788.html                       

目录
相关文章
|
15天前
|
JSON API 开发者
淘宝天猫商品详情API接口攻略
淘宝天猫商品详情API接口是电商开发的重要工具,支持获取商品主图、价格、标题、销量及属性等详细信息。该接口广泛应用于电商数据分析与自动化购物领域。开发者可通过注册淘宝开放平台账号、申请权限并按照流程调用接口,实现商品基础信息、详情描述、图片视频资源、SKU属性及评价数据的查询。示例代码展示了如何使用Python调用此API,帮助快速上手开发。
51 13
|
1月前
|
数据挖掘 API 开发者
深度解析!淘宝商品详情 API 接口的高效调用与实战应用
淘宝商品详情API为开发者提供高效获取商品信息的途径,支持名称、价格、销量等详细数据的提取。接口通过GET/POST请求方式调用,需携带商品ID与授权信息(如AppKey)。其特点包括数据全面、实时性强及安全性高,满足电商应用、数据分析等需求。本文还提供了Python调用示例,涵盖签名生成、参数构建及请求发送全流程,助力开发者快速集成淘宝商品数据至自身系统中。
|
2月前
|
XML JSON API
淘宝商品详情API的调用流程(python请求示例以及json数据示例返回参考)
JSON数据示例:需要提供一个结构化的示例,展示商品详情可能包含的字段,如商品标题、价格、库存、描述、图片链接、卖家信息等。考虑到稳定性,示例应基于淘宝开放平台的标准响应格式。
|
5天前
|
监控 供应链 数据挖掘
淘宝商品详情API接口解析与 Python 实战指南
淘宝商品详情API接口是淘宝开放平台提供的编程工具,支持开发者获取商品详细信息,包括基础属性、价格、库存、销售策略及卖家信息等。适用于电商数据分析、竞品分析与价格策略优化等场景。接口功能涵盖商品基础信息、详情描述、图片视频资源、SKU属性及评价统计的查询。通过构造请求URL和签名,可便捷调用数据。典型应用场景包括电商比价工具、商品数据分析平台、供应链管理及营销活动监控等,助力高效运营与决策。
84 26
|
3天前
|
JSON API 数据格式
淘宝商品列表API接口攻略(附代码示例)
淘宝商品列表API接口用于获取淘宝商品信息,支持按关键词、类目、价格区间等条件查询,返回商品标题、价格、销量等数据。通过构造HTTP请求并解析JSON响应,可提取所需信息。示例代码展示了使用Python调用该API的流程,包括生成签名和请求参数配置,方便开发者快速上手。
36 12
|
15天前
|
JSON API 数据格式
淘宝天猫商品列表API接口(附代码示例)
淘宝天猫商品列表API接口是获取淘宝/天猫商品数据的工具,支持按关键词、价格区间、销量等条件筛选商品,返回商品标题、价格、销量等基本信息,适用于商品分析与竞品调研。使用时需注册开发者账号并调用HTTP GET/POST请求,响应数据为JSON格式。示例代码展示了如何用Python发送请求并处理返回数据。
81 18
|
13天前
|
JSON API 数据格式
淘宝天猫商品评论API接口指南
淘宝天猫商品评论API接口助您高效获取评论数据。首先注册淘宝开放平台账号并完成实名认证,接着创建应用、申请权限(如“tmall.item.evaluate.get”),最后用编程语言调用API。该接口支持多样化数据(用户昵称、评分、追评等)、灵活筛选与分页功能,并依托淘宝技术确保实时性和稳定性,满足数据分析需求。
87 11
|
11天前
|
JSON 监控 API
深度解析淘宝天猫店铺所有商品API接口,一文带你吃透
本文介绍如何通过淘宝开放平台的API获取店铺所有商品信息,适用于电商数据分析、竞品监控等场景。核心接口为`tb.items.onsale.get`(出售中商品)和`tb.items.inventory.get`(库存商品列表)。接口采用HTTP POST请求,返回JSON格式数据,包含商品总数、列表及各商品的ID、标题、价格、图片URL等关键信息,并提供Python实现示例,助力开发者高效获取与处理数据。
|
3天前
|
机器学习/深度学习 算法 API
淘宝图片搜索API秘籍!轻松获取相似商品数据
淘宝图片搜索API是基于深度学习和计算机视觉技术的图片搜索工具,支持通过上传图片或URL搜索淘宝相似商品。其核心接口如`taobao.image.search`适用于电商购物、商品推荐及竞品分析等场景。该API具备高效性、准确性和易用性,用户只需提供一张图片即可快速获取相似商品,极大提升购物体验与效率。同时,商家也可借此优化商品展示以提高曝光率和销售机会。使用时,用户可通过Python代码调用API,上传图片并获取搜索结果。
|
1月前
|
存储 JSON API
深入研究:淘宝天猫商品详情查询API详解
淘宝开放平台提供一系列API接口,帮助开发者获取淘宝商品的详细信息并集成到自有应用中。主要功能包括:获取单个商品详情(item_get)、评论信息(item_review)、快递费用(item_fee)、等。此外,还支持搜索商品(item_search)、按图搜索(item_search_img)、优惠券查询(item_search_coupon)、类目信息(item_cat_get)等功能。返回数据通常为JSON格式,包含商品标题、价格、库存、主图链接等基本信息,以及HTML格式的详细描述内容,方便开发者解析与展示。

热门文章

最新文章