前言

  由于工作原因,需要用到今日头条的Marketing API做一些广告投放的定制化开发。然后看现在网上也没多少关于头条Marketing API的文章,于是便就有了该篇文章。

  头条Marketing API主页地址:https://ad.toutiao.com/openapi/index.html。

  头条Marketing API开发文档:https://ad.toutiao.com/openapi/doc/index.html

交互图

  典型的OAuth2.0授权流程:

  

使用步骤

  1. 首先需要去主页注册一个开发者账号,并申请一个APPID,设置好回调地址

  因为从头条重定向回自己的站点只是浏览器行为,所有回调地址填写本机可访问的地址即可(不需要头条能访问),这里是http://localhost:5000/api/auth/callback。

  2. 在appsettings.json中设置APPID + Secret

3. 启动项目,即可直接在swagger中使用

  

  

程序逻辑

  1. 在launchsettings.json中设置启动地址为http://localhost:5000/api/auth

2. 浏览器访问地址http://localhost:5000/api/auth,会重定向到今日头条的认证地址,并且拼接好参数

3. 跳转到今日头条的认证地址并点击“同意授权”

  4. 重定向回http://localhost:5000/api/auth/callback并带回了auth_code参数

  

  5. 利用AuthCode + AppId + Secret调用头条认证API获取AccessToken,并把AccessToken缓存到内存中,然后重定向回swagger

调用头条API

  0. 示例代码

 1. 根据文档拼接对应参数

var url = "https://ad.toutiao.com/open_api/2/ad/get/" + "?advertiser_id=" + advertiserId + "&page=" + page + "&page_size=" + pageSize;

  2. 从缓存中取出之前得到的AccessToken

_cache.Get<string>(ToutiaoCacheKey.AccessToken)

  3. 构造请求头信息

client.DefaultRequestHeaders.Add("Access-Token", accessToken);

  4. 调用API,并把返回的json反序列化为dynamic类型

var response = await _restClient.GetAsync<DynamicResponse>(url, _cache.Get<string>(ToutiaoCacheKey.AccessToken));

  5. 输出结果到浏览器

  说明:示例中只有查询类API,没有操作类型的API,主要是考虑到操作可能会影响到现有业务。

操作类型API

  代码调用操作类型的API时,可能需要构建请求json对应的实体,这里可以使用Visual Studio的选择性编辑功能,快速生成对象。

  示例:

  1. 拷贝json

2. 新建一个cs文件,点击Visual Studio菜单栏的“编辑” -> “选择性编辑” -> “保存json为类”

  

  

  3. 设置JsonProperty(可选,规范、美观考虑)

  

  其实,头条的开发文档中有提供操作API的示例json,但是示例json的字段有些不全,而请求API的结果基本包含了操作API的字段。

  因此,可以使用操作API的返回json来生成操作请求。同时,这个小工具也可以做一些前期的简单查询。

源码地址

  https://github.com/ErikXu/ToutiaoApi

原文地址:https://www.cnblogs.com/Erik_Xu/p/10055384.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

今日头条Marketing API小工具(.Net Core版本)相关推荐

  1. 今日头条安卓_今日头条加入“常用”小程序窗口,小游戏或将再次崛起?

    安卓手机在今日头条7.1.8版本更新后,头条APP底部出现了[常用]标签,而点击后则会弹出小程序桌面.此前在今日头条上使用过的小程序会出现在此处.最好的位置+战略级的布局,已经很明确告诉我们,需要在今 ...

  2. AI如何反低俗?今日头条推内容检测工具“灵犬”3.0,首次公开其技术原理

    安妮 发自 北三环西路 量子位 出品 | 公众号 QbitAI 男默女泪.不看不是中国人.看完惊呆.身份惊人.不看吃亏.癌症凶手--这些标题党文章的惯用词汇,还熟悉吗. 昨天(7月30日),今日头条发 ...

  3. 今日头条/抖音小程序开源商城,附带开源项目地址

    项目地址 https://github.com/EastWorld/tt-app-mall 头条/抖音小程序商城 头条/抖音小程序商城,头条/抖音小程序微店,长期维护版本,欢迎大家踊跃提交贡献代码: ...

  4. rost反剽窃检测系统_色情、低俗信息没得治?今日头条这款检测工具,240万人都在用!...

    不同于色情信息,处理低俗信息的一个难点在于,人们对于低俗的判断标准具有一定的主观性. 刺猬公社 | 石灿 2月20日,今日头条方面宣布了"灵犬"全面升级的消息.除了反色情低俗,新版 ...

  5. 阿里腾讯今日头条纷纷选择的工具,ClickHouse到底有什么本事?

    简介:ClickHouse是近年来备受关注的开源列式数据库,主要用于数据分析(OLAP)领域.目前国内社区火热,各个大厂纷纷跟进大规模使用 ❞ ClickHouse是近年来备受关注的开源列式数据库,主 ...

  6. vue仿今日头条_微信小程序仿今日头条导航栏滚动解析

    项目需要,做一个和今日头条一样的导航栏,可以横行滚动,幸好再weui里面看到了类似的例子 地址:https://weui.shanliwawa.top/demo/js4.html,使用iscroll- ...

  7. 新春第六波:《今日头条》推荐-小程序极速开发用逐浪、高端CMS用真棒

    关于本功能的简介: 字库大师是一款由字体网ziti163.com发布的小程序,其背后研发团队是高端软件研发厂商-上海Zoomla!逐浪CMS团队,作为微软与腾讯开... 字库大师是一款由字体网ziti ...

  8. 微信小程序开发-仿今日头条(二)

    该仿今日头条的文章系列如下: 微信小程序-仿今日头条客户端 微信小程序开发-仿今日头条(二) 转载请标明:https://blog.csdn.net/yangjianbo456/article/det ...

  9. 微信小程序-仿今日头条客户端

    该仿今日头条的文章系列如下: 微信小程序-仿今日头条客户端 微信小程序开发-仿今日头条(二) 转载请标明:https://blog.csdn.net/yangjianbo456/article/det ...

最新文章

  1. 自动售货机编程_Rosmaro中基于视觉自动机的编程简介
  2. R语言无序多分类Logistic回归模型实战
  3. linux /proc/net/tcp 文件分析
  4. C/C++编程的一些技巧
  5. java jdbc 详解_JDBC详解
  6. HDU1754 —— I Hate It 线段树 单点修改及区间最大值
  7. Linux bind DNS配置
  8. 《暗黑破坏神2》关于d2loader的使用说明
  9. 项目源代码迁移到另一个gitlab的方法(保留原来的提交记录)
  10. 通信技术——水下通信技术的分类、特征、应用及其最新研究进展
  11. springcloud微服务中跨域配置
  12. UE4源码阅读_骨骼模型与动画系统_Mesh
  13. 计算机的击键方法教学教案,2.2 敲击键盘 教案
  14. C++保存中间结果到文件
  15. 职教计算机录取分数,今年高职院校录取分数线是多少?
  16. UML在线绘图 - ProcessOn
  17. C++封装一个易用的打印backtrace信息的函数
  18. 用HTML5图形拼成的画房子,未来的房子绘画作品图片欣赏
  19. 小i机器人、招行、复旦等专家教你:AI时代服务创新与企业转型
  20. Android Studio gradle下载依赖包失败的解决办法

热门文章

  1. html标签属性和标签事件,HTML参考手册( 标签、属性和事件)
  2. 1. ReactJS基础(开发环境搭建)
  3. 能上架App的GooglePlay开发者账号获取流程
  4. ASP.NET Session的七点认识(转)
  5. 08_drain a node on the swarm
  6. 在Ant的javac中指定源文件编码方式,以避免警告: 编码 GBK 的不可映射字符的错误...
  7. 关于清晰讲解linux正则表达式的博文分享
  8. SQL Sever 性能调优
  9. oracle 11g ORA-12541: TNS: 无监听程序 (DBD ERROR: OCIServerAttach)
  10. PHP环境,放置系统盘的文件