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

前言

  由于工作原因,需要用到今日头条的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授权流程:

  640?wx_fmt=png

 

使用步骤

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

640?wx_fmt=png

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

 

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

640?wx_fmt=png

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

  640?wx_fmt=png

  640?wx_fmt=png

 

程序逻辑

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

640?wx_fmt=png

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

640?wx_fmt=png

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

640?wx_fmt=png

 

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

  640?wx_fmt=png

 

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

640?wx_fmt=png

调用头条API

  0. 示例代码

640?wx_fmt=png

 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

640?wx_fmt=png

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

  640?wx_fmt=png

  640?wx_fmt=png

 

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

  640?wx_fmt=png

 

  其实,头条的开发文档中有提供操作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
640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/318573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P6880-[JOI 2020 Final]オリンピックバス【最短路】

正题 题目链接:https://www.luogu.com.cn/problem/P6880 题目大意 给出nnn个点mmm条边的有向图&#xff0c;边有边权和一个翻转权值。 翻转至多一条边使得1−>n−>11->n->11−>n−>1往返的权值加上翻转权值最小。 1≤n≤200,1≤m≤51041\leq n\leq 200,1\…

The 2020 ICPC Asia Macau Regional Contest J. Jewel Grab(数颜色+链表)

J. Jewel Grab Tartarus _Wallace_ 转化询问&#xff1a;对于一个询问 [s,k]&#xff0c;找到一个最长的区间 [s,t]&#xff0c;满足区间中出现次数超过一次的元素&#xff0c;的出现次数减一&#xff0c;的和&#xff0c;不超过 k。 对于该区间[s,t] 区间数颜色&#xff1a;…

牛客题霸 [最大数] C++题解/答案

牛客题霸 [最大数] C题解/答案 题目描述 给定一个数组由一些非负整数组成&#xff0c;现需要将他们进行排列并拼接&#xff0c;使得最后的结果最大&#xff0c;返回值需要是string类型 否则可能会溢出 题解&#xff1a; 将字符串存入vector中然后sort排序&#xff0c;最后将…

模板:割点、桥与双连通

文章目录割点代码桥点双连通分量代码边双连通分量代码割点 和强连通分量十分相似 分为树枝边、前向边和后向边 注意&#xff01; if(x!r&&low[to]>dfn[x]) cut[x]1;这句判断只能在树枝边出现 否则会因为前向边的存在而出错 代码 #include<bits/stdc.h> us…

.NET Core实战项目之CMS 第十章 设计篇-系统开发框架设计

这两天比较忙&#xff0c;周末也在加班&#xff0c;所以更新的就慢了一点&#xff0c;不过没关系&#xff0c;今天我们就进行千呼万唤的系统开发框架的设计。不知道上篇关于架构设计的文章大家有没有阅读&#xff0c;如果阅读后相信一定对架构设计有了更近一部的理解&#xff0…

喝酒、工作与自律

喝酒 自从开始打算品酒之后&#xff0c;家里的小酒数量不断增加&#xff0c;每天晚上喝个15ml&#xff0c;慢慢也能喝出一些区别了。 酱香、清香、浓香的区别还是挺明显的&#xff0c;闻香就能区别出来 浓香里的五粮液特点很明显&#xff0c;闻的时候有粮香&#xff0c;入口后…

51nod1836-战忽局的手段【期望dp,矩阵乘法】

正题 题目连接:http://www.51nod.com/Challenge/Problem.html#problemId1836 题目大意 nnn个点mmm次随机选择一个点标记&#xff08;可以重复&#xff09;&#xff0c;求最后被标记点的期望个数。 1≤n,m≤10181\leq n,m\leq 10^{18}1≤n,m≤1018 解题思路 额开始拿方案数推了…

分析现有 WPF / Windows Forms 程序能否顺利迁移到 .NET Core 3.0

今年五月的 Build 大会上&#xff0c;微软说 .NET Core 3.0 将带来 WPF / Windows Forms 这些桌面应用的支持。当然&#xff0c;是通过 Windows 兼容包&#xff08;Windows Compatibility Pack&#xff09;实现的。为了提前检查你的程序是否能在未来跑在 .NET Core 3.0 上&…

第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明) Stone Games

Stone Games 主席树 Code1 #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int N1000010; using lllong long; const ll MAX1000000000ll; int n,a[N],m; struct node {int l,r;ll v; }tree[N*40]; int root[N],c…

路径求和(ybtoj-树形dp)

文章目录题目描述解析代码题目描述 给出一棵带边权的树&#xff0c;求所有至少有一个端点为叶节点的所有简单路径的长度和 解析 换一个角度想 考虑将树分割为AB两部分的一条边会存在于多少条符合条件的路径中&#xff08;也就是边权会考虑多少次&#xff09; 不难发现&#…

51nod1675-序列变换【莫比乌斯反演】

正题 题目连接:http://www.51nod.com/Challenge/Problem.html#problemId1675 题目大意 给出两个长度为nnn的序列a,ba,ba,b&#xff0c;求有多少对x,yx,yx,y满足 gcd(x,y)1且abxbaygcd(x,y)1且a_{b_x}b_{a_y}gcd(x,y)1且abx​​bay​​ 1≤n≤105,1≤ai,bi≤n1\leq n\leq 10^5…

牛客题霸 [子数组最大乘积] C++题解/答案

牛客题霸 [子数组最大乘积] C题解/答案 题目描述 给定一个double类型的数组arr&#xff0c;其中的元素可正可负可0&#xff0c;返回子数组累乘的最大乘积。 题解&#xff1a; 同时记录最大值和最小值&#xff0c;为什么?因为给的元素是存在负数的&#xff0c;当出现负数时…

ML.NET 0.8特性简介

本周.NET生态圈内的更新源源不断&#xff0c;除了.NET Core 2.2&#xff0c;ASP.NET Core 2.2和Entity Framework Core 2.2之外&#xff0c;ML.NET 0.8也一并登上舞台。新的推荐场景ML.NET使用基于矩阵分解(Matrix Factorization)和场感知分解机(Field-aware Factorization Mac…

F-Lucky Pascal Triangle(Lucas+数位dp)

F-Lucky Pascal Triangle issue是fw题解 下面代码TLE了&#xff0c;但是此题数位dp的思想非常值得学习 Lucas的过程相当于把n,mn,mn,m在p进制下的每一位拿出来做组合数 Lucas(n,m,p)∏(nkmk)modp\text{Lucas}(n,m,p)\prod \dbinom {n_k}{m_k} \bmod pLucas(n,m,p)∏(mk​nk​…

树的合并(ybtoj-树上dp)

文章目录题目描述前言解析代码thanks for reading&#xff01;题目描述 前言 全网唯一AC&#xff01;&#xff01;&#xff01; 妙啊 而且还是完全自己想出来的做法 开心 &#xff08;APIO还是没白听&#xff09; 但是思路出来后代码实现十分坎坷 建两个图分别dfs3次那个地方…

牛客题霸 [矩阵元素查找] C++题解/答案

牛客题霸 [矩阵元素查找] C题解/答案 题目描述 已知int一个有序矩阵mat&#xff0c;同时给定矩阵的大小n和m以及需要查找的元素x&#xff0c;且矩阵的行和列都是从小到大有序的。设计查找算法返回所查找元素的二元数组&#xff0c;代表该元素的行号和列号(均从零开始)。保证元…

51nod1821-最优集合【贪心】

正题 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId1821 题目大意 nnn个可重集合&#xff0c;TTT次询问&#xff0c;询问将集合SxS_xSx​和一个选出大小为kkk的SyS_ySy​的子集合并成的独立集S′SS′满足能够找到一个最大的zzz使得对于任意的正整数i∈[1,z…

.net core中的高效动态内存管理方案

.net core在新增的System.Buffers中引入了一大堆高效内存管理的类&#xff0c;如span和memory、内存池。本文今天这里介绍一个高效动态内存访问方案。ReadOnlySequenceSegment<T>在我们读取数据的过程&#xff0c;很多时候会出现如下场景&#xff1a;不知道数据实际大小一…

C. Sum of Log(数位dp)

C. Sum of Log Code1 暴力记的状态 TLE #include<bits/stdc.h> using namespace std; using lllong long; template <class Tint> T rd() {T res0;T fg1;char chgetchar();while(!isdigit(ch)) {if(ch-) fg-1;chgetchar();}while( isdigit(ch)) res(res<<…

APIO游记(5.19-5.23)

概要 本来以为钱基本是白花了 但惊喜的发现其实没有 APIO之后做了几道题&#xff0c;感觉对题目的分析能力增强了 大概虽然不会任何前置算法&#xff0c;但其中的思路多多少少还是吸收到一些 还有一枚Cu诶 针不戳 课程 5.19决策单调性与四边形不等式 第一天 见识到了天高地…