首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 企业软件 > 行业软件 >

淘宝开发者平台使用总结一

2013-12-28 
淘宝开发者平台使用总结1试水TB开发者平台,目前可调通添加商品,获取商品列表,以及添加“主动通知”监听。现把

淘宝开发者平台使用总结1

试水TB开发者平台,目前可调通添加商品,获取商品列表,以及添加“主动通知”监听。现把整个过程进行简要梳理。官方文档虽详细。

第一步:注册成为平台开发者,然后创建一个自己的应用。

这里请先注意一下在应用设置->应用证书中,包含MyAppTest的App key与App secret,还有SDK下载。

在沙箱里注册一个卖家帐号:名称替换是要以sandbox_开始

然后,就可以了。。。

?

关键是要理解TB的授权机制,可查看文档

先明白几个概念:

App key:App的唯一标识,有时也称为client_id(比如OAuth2.0根据授权号获取SesstionKey(有时也要UserToken)时)

App secret: App的密钥,有时也称为client_secret(同上)

SessionKey:用户授权后的标识,就向用户家的房门钥匙。

回调URL:当用户点击“授权”后,TB会调用这个URL,并把用户的sessionKey一并发过来。

?

授权有四种方式,原理是一样:

有一个app,有一个用户,用户想用这个app,就拿app key去TB的平台申请(通过一个包含了appkey的URL就可以),TB会跳出用户登陆界面,

提示用户先登陆,然后再二次验证(手机短信),确认后,点击“授权”,则TB把sessionKey回调给上述的URL。然后,app就有sessionKey了,

就可以进房间了。。。当然也可以不使用回调。

?

为了显示智商高,我们不使用回调。来吧,干货

1、

浏览器中输入:https://oauth.tbsandbox.com/authorize?response_type=code&client_id=1021688926&redirect_uri=urn:ietf:wg:oauth:2.0:oob&state=1212&view=web

注意:把上述的client_id替换为app的->应用/应用设置/沙箱环境管理

失败了吧!我就知道,你会把这个client_id写成app的正式id,再看上面注意的后半部分。

成功将会返回一个授权码

?

2、使用SDK获取token

?

 Map<String, String> param = new HashMap<String, String>();  param.put("grant_type", "authorization_code");  param.put("code","TKNTer7J2jN4w15Bl3Rze0XU25829");   param.put("client_id", "102123688926");  param.put("client_secret", "sandbox4054d5e4ssd6c4408be596b6669");  param.put("redirect_uri", "urn:ietf:wg:oauth:2.0:oob");  param.put("view", "web");  // param.put("state", state);  try {   String responseJson = WebUtils.doPost(     "https://oauth.tbsandbox.com/token", param, 3000, 3000);   System.out.println(responseJson);  } catch (IOException e) {   // TODO Auto-generated catch block   e.printStackTrace();  }

?

?

返回的是seesionKey和refreshKey

上面已经提了在哪儿下载SDK了哦!

?再送一个刷新sessionkey的吧

3、刷新sessionKey

??

Map<String, String> param = new HashMap<String, String>();  param.put("grant_type", "refresh_token");  param.put("refresh_token",    "6201f26c7a14733cab6a1b4c47bsdf61c6334ZZ6bcef9d9ceb3611768589");  param.put("client_id", "1021688943426");  param.put("client_secret", "sandbox405sdfs4d5e4d6c4408be596b6669");  param.put("view", "web");  // param.put("state", state);  try {   String responseJson = WebUtils.doPost(     "https://oauth.tbsandbox.com/token", param, 3000, 3000);   System.out.println(responseJson);  } catch (IOException e) {   // TODO Auto-generated catch block   e.printStackTrace();  }

?

?

? 至此,我们持有的TA房间的钥匙了,嗯。。。是沙箱环境下,正式测试环境一个样(我还没有测,TB说的)。

? --------------------------------------文字不够代码凑--------------------------------------------------------------------------

? 验证一下能不能往添加商品,注意:测试过程出现的CID是类目ID,店铺里可以定。

  public void testBaseAddItem() {TaobaoClient client = new DefaultTaobaoClient("http://gw.api.tbsandbox.com/router/rest", "10241688926","sandbox4054d5e4d6c4408be596b6669", "xml", 600, 600,Constants.SIGN_METHOD_HMAC);ItemAddRequest req = new ItemAddRequest();req.setNum(1L);req.setPrice("100");req.setType("fixed");req.setStuffStatus("new");req.setTitle("沙箱测试ONE");req.setDesc("描述最少5字符,最多不能超过25000字符");req.setLocationState("浙江");req.setLocationCity("杭州");req.setCid(162104L);req.setPaimaiInfoDeposit(10000L);try {ItemAddResponse response = client.execute(req,"61025014e19374100adf18fcceb81ab4ba26aced3d556842a3611768589");System.out.println(response.getMsg());} catch (ApiException e) {e.printStackTrace();}}

?

--------------------------------------主动通知--------------------------------------------------------------------------------

原理:提交一个主动通知请求,然后建立一个长连接,TB就会根据请求的条件,将增量数据实时回调给长连接下的Listener,嗯,代码不忽悠。

TaobaoClient client = new DefaultTaobaoClient("http://gw.api.tbsandbox.com/router/rest", "1021688926","sandbox4054d5e4d6c4408be596b6669");IncrementCustomerPermitRequest req = new IncrementCustomerPermitRequest();req.setType("get,syn,notify");req.setTopics("trade;refund;item");req.setStatus("all;all;ItemAdd,ItemUpdate");try {IncrementCustomerPermitResponse response = client.execute(req,"62025304ea18fcceb81ab4ba26aced3d556842ZZb4e7fca3611768589");System.out.println(response.getBody());} catch (ApiException e) {e.printStackTrace();}Configuration conf = new Configuration("1021688926","sandbox4054d5e4d6c4408be596b6669", null);conf.setConnectUrl("http://stream.api.tbsandbox.com/stream");TopCometStream stream = new TopCometStreamFactory(conf).getInstance();stream.setConnectionListener(new InnerConnectionLifeCycleListener());stream.setMessageListener(new InnerTopCometMessageListener());stream.start();

?

?

测试的话,可以再注册一个买家号,购买沙箱中那个卖家下的商品,回调就来了。

代码中的app key或者app secret请换掉!

?

热点排行