1.说明

由于项目临时提出需求,需要对接淘宝公共平台查询用户的一些信息,所以需要和淘宝平台做对接,我查看了一下淘宝公共平台开发文档,虽然写的挺丰富挺整洁,但我还是一头雾水,业务流程相对复杂,经过多次查看和尝试接口文档调用,终于是花了周末两天的是将搞定了,不得不记录一下,希望下次不要再采坑,也希望对需要对接淘宝平台的小伙伴们有一些帮助,不要花费不必要的时间在踩坑的路上.

淘宝开放平台地址:开放平台-文档中心 taobao.tbk.dg.cpa.activity.report( 淘宝客-推广者-任务奖励效果报表 )

2.踩坑

看这里有详细的API说明,下面还有一大堆参数说明和调用示例,但我还是踩坑了

这是使用淘宝SDK的请求示例

TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
TbkDgCpaActivityReportRequest req = new TbkDgCpaActivityReportRequest();
req.setEventId(1L);
req.setBizDate("20210818");
req.setPageNo(1L);
req.setQueryType(1L);
req.setPageSize(10L);
req.setPid("mm_123_123_123");
req.setRelationId(100L);
TbkDgCpaActivityReportResponse rsp = client.execute(req);
System.out.println(rsp.getBody());

最开始使用的是这个 开放平台-文档中心

还是有一些区别的,这里显示推广者不需要token而我了带token的

TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
TbkScCpaActivityReportRequest req = new TbkScCpaActivityReportRequest();
req.setEventId(1L);
req.setBizDate("20210818");
req.setPageNo(1L);
req.setQueryType(1L);
req.setPageSize(10L);
req.setPid("mm_123_123_123");
req.setRelationId(100L);
TbkScCpaActivityReportResponse rsp = client.execute(req, sessionKey);
System.out.println(rsp.getBody());

因为在调用时候发现 client.execute(req, sessionKey)方法一个参数不带sessionKey会有问题,显然我的SDK里面没有这个方法,所以下面重点讲解带token的方式

3.解决方案

既然需要token那就要看看怎样获取到token ,这里的session就是我们想要的sessionKey

点击进去 开放平台-文档中心

这里也会有详细的介绍

1.创建应用

这里不做过多说明,跟着文档就可以

2.获取授权code

拼接url访问在跳转页会返回一个连接带code参数就是我们需要的code,详细的参数也可以在文档中看到

3.获取token

拿到上一步获取到的code就可以获取到访问token,这个是示例,按照这种方式的确可以获取到,在实际应用时候稍作修改就行了

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import com.taobao.api.internal.util.WebUtils; //引用top sdkpublic class open_oauth {public static void main(String[] args) {String url="https://oauth.taobao.com/token";Map<String,String> props=new HashMap<String,String>();props.put("grant_type","authorization_code");
/*测试时,需把test参数换成自己应用对应的值*/props.put("code","test");props.put("client_id","test");props.put("client_secret","test");props.put("redirect_uri","http://www.test.com");props.put("view","web");String s="";try{s=WebUtils.doPost(url, props, 30000, 30000);System.out.println(s);}catch(IOException e){e.printStackTrace();}} }

下面是我写的测试

@GetMapping("/tb-report")public String tbCpaReport(@RequestParam Map<String,String> map) throws ApiException {String url = "https://eco.taobao.com/router/rest";String appKey = map.get("appKey");String secret =map.get("secret");String date =map.get("date");String pid =map.get("pid");String eventId =map.get("eventId");String token = openAuth(map);TaobaoClient client = new DefaultTaobaoClient(url, appKey, secret);TbkDgCpaActivityReportRequest request = new TbkDgCpaActivityReportRequest();request.setEventId(Long.parseLong(eventId));request.setBizDate(date);request.setPageNo(1L);request.setQueryType(1L);request.setPageSize(10L);request.setPid(pid);request.setRelationId(100L);TbkDgCpaActivityReportResponse response = client.execute(request,token);System.out.println(response.getBody());return response.getBody();}@GetMapping("/open-auth")public String openAuth(@RequestParam Map<String,String> map){String code =map.get("code") ;String redisKey = "tb-token-"+code;String accessToken = (String) redisUtils.get(redisKey);if(null!=accessToken&&!"".equals(accessToken)){return accessToken;}String appKey = map.get("appKey");String secret =map.get("secret");String url="https://oauth.taobao.com/token";Map<String,String> props=new HashMap<String,String>();props.put("grant_type","authorization_code");/*测试时,需把test参数换成自己应用对应的值*/props.put("code",code);props.put("client_id",appKey);props.put("client_secret",secret);props.put("redirect_uri","https://hhmt-tb.yoqu.net/v2/taobao/code");props.put("view","web");String s="";try{s=WebUtils.doPost(url, props, 30000, 30000);JSONObject json =  JSONObject.parseObject(s);accessToken = (String) json.get("access_token");redisUtils.set(redisKey,accessToken,1800L,TimeUnit.SECONDS);}catch(IOException exception){exception.printStackTrace();}return accessToken;}

需要注意的是要自己保存code和token,因为一个code只能获取一次token,而且token有效时间是半小时,所有这里我选择保存在redis里面

4.测试

pid参数可以查到具体的某一个推广位,如果不加就是查所有。因为只是测试,所有这里没有写分页参数,代码中也没有校验逻辑。需要的小伙伴可以在这个基础上做更改。

4.总结

先读文档在测试,实在不行就百度,CSDB,B站

对接淘宝公共平台API相关推荐

  1. 如何快速对接淘宝开放平台API接口(淘宝店铺订单明文接口,淘宝店铺商品上传接口,淘宝店铺订单交易接口)

    很多电商系统的需求场景,都面临淘宝开放平台的接入,但这也是让不少开发者头疼的问题. 那么,如果快速接入呢?东哥的对接经验相信可以帮到不少开发者,快速接入.少走弯路. 1.公共参数 名称 类型 必须 描 ...

  2. 如何对接淘宝开放平台API接口(超详细)

    阿里开放平台:https://open.taobao.com/api.htm?docId=54&docType=2 可以看到,不少接口/能力需要"用户授权".很多系统服务商 ...

  3. 对接淘宝天猫平台的第一篇

    目录 前言 一.对接淘宝天猫平台的调研 1.创建应用 2. 应用接入流程介绍 二.拉取淘宝天猫店铺的订单数据 1. 同步订单的解决方案 1.第1种方案:轮询订单相关接口获取订单数据 2.第2种方案:  ...

  4. 淘宝开放平台应用申请?淘宝开放平台API申请?

    淘宝开放平台,是淘宝网API中心,通过开放平台,我们可以获取淘宝店铺的订单信息.发货,也可以实现商品的上传.图片修改等. 但是自2016年开始,某些类目就强管控不让申请了,所以目前想对接淘宝开放平台实 ...

  5. 淘宝/天猫平台API 接口及API文档

    淘宝/天猫平台API 接口平台 item_get - 获得淘宝详情接口 测试地址:https://console.open.onebound.cn/console/index.php?i=Anzexi ...

  6. Golang淘宝开放平台Api请求基础SDK

    GO语言.淘宝Api.淘宝开放平台Api请求基础SDK dkeng/opentaobao-go​github.com 淘宝API sign算法dkeng/opentaobao-go淘宝API sign ...

  7. 关于淘宝开放平台API的session失效问题解决

    前几天发现淘宝开放平台API突然无法调用了,一直在提示出错,提示的错误信息为:Invalid session. 众所周知淘宝开放平台的API接口调用需要三个Key:appKey(合作方标识), sec ...

  8. 关于淘宝API的详细说明(淘宝开放平台API揭秘)

    自淘宝开放平台Beta公测开始,陆续开放了上百次个API,这些API涵盖了淘宝基本业务,截止发日志当天开放平台API每天的调用量可是说是天文数字. 作为TOP开发者的您对 于淘宝平台-API可以信手拿 ...

  9. 淘宝开放平台API族

    淘宝作为电子商务市场的超级航母,在电子商务基础服务领域,经过多年的沉淀和革新,围绕电子商务生态链的持续整合,形成了以营销.支付.物流和售后为核心的基础服务体系. 淘宝是一个电子商务的江湖,从整合核心的 ...

最新文章

  1. Eclipse 中 SDK无法更新---解决方法
  2. 数据链路层协议_数据链路层 基本数据链路协议
  3. boost::mpi::wait_any相关用法的测试程序
  4. 【tool】将虚拟机从 VMware workstation 转到 vsphere
  5. 值转换成布尔类型的False;
  6. ubuntu 16.0安装mysql8_ubuntu16.0.4 安装 mysql8.0.18的
  7. 2022 智能语音技术最新进展与发展趋势
  8. 最小化安装CentOS 7后,图形界面的安装(GNOME、KDE等)
  9. 【Python读文件】'gbk' codec can't decode byte 0xb1 in position 5: illegal multibyte sequence
  10. Logstash 日志搜集处理框架 安装配置
  11. 全网首发:以字型为例,一维表示的二维数组矩阵,以易理解的方式旋转90、-90
  12. linux重定向文件容加时间,[单选] linux系统,把当前日期重定向到/tmp/date文件中,并不想覆盖原来的内容,下面正确的操作是()。...
  13. 递归和非递归分别实现求n的阶乘
  14. 英文日期和时间表示方法
  15. html什么用于创建表格的标题,在HTML页面中,()标记用于为表格中的一列指定一个标题(选一项)...
  16. sram是靠什么存储信息
  17. 关于单片机看门狗的浅谈理解
  18. 网页设计期末课程设计大作业 HTML、CSS 海绵宝宝动漫网页作业
  19. Clock and Jitter Phase Noise
  20. Angular4 - 指令

热门文章

  1. arm交叉编译器下载
  2. 华为鸿蒙文件管理器通用版,华为文件管理器官方下载_华为文件管理器最新版下载v10.6.2.300 - 数码资源网...
  3. 网传人人车破产,或是改变销售模式?-千氪
  4. 树莓派4B 8G安装日志(1)——基础环境安装
  5. 西门子1200 PLC CRC效验程序功能块
  6. 西门子1200plc轴运动控制程序模板
  7. 面试题:“你的职业规划是什么?”
  8. java excel 导入 格式转换_【转】JAVA实现EXCEL的导入和导出(二)
  9. eclipse官网32位下载地址
  10. ReferenceError: primordials is not defined错误解决