关键词:
前言
由于工作原因,需要用到今日头条的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
"Logging": "LogLevel": "Default": "Warning" , "AllowedHosts": "*", "toutiao": "appId": "Your appId", "secret": "Your secret"
3. 启动项目,即可直接在swagger中使用
程序逻辑
1. 在launchsettings.json中设置启动地址为http://localhost:5000/api/auth
"ToutiaoApi": "commandName": "Project", "launchBrowser": true, "launchUrl": "api/auth", "applicationUrl": "http://localhost:5000", "environmentVariables": "ASPNETCORE_ENVIRONMENT": "Development"
2. 浏览器访问地址http://localhost:5000/api/auth,会重定向到今日头条的认证地址,并且拼接好参数
[HttpGet] public IActionResult Redirect() var authUrl = "http://ad.toutiao.com/openapi/audit/oauth.html"; var redirectUrl = $"Request.Scheme://Request.Host/api/auth/callback"; var url = $"authUrl?app_id=_setting.AppId&state=&scope=["ad_service","report_service","dmp_service","account_service"]&redirect_uri=redirectUrl"; return Redirect(url);
3. 跳转到今日头条的认证地址并点击“同意授权”
4. 重定向回http://localhost:5000/api/auth/callback并带回了auth_code参数
5. 利用AuthCode + AppId + Secret调用头条认证API获取AccessToken,并把AccessToken缓存到内存中,然后重定向回swagger
[HttpGet("callback")] public async Task<IActionResult> Callback([FromQuery(Name = "auth_code")]string authCode) var url = "https://ad.toutiao.com/open_api/oauth2/access_token/"; var request = new AuthRequest AppId = _setting.AppId, Secret = _setting.Secret, AuthCode = authCode ; var response = await _restClient.PostAsync<AuthResponse>(url, request); response.EnsureSuccess(); _cache.Set(ToutiaoCacheKey.AccessToken, response.Data.AccessToken); return Redirect("/swagger/index.html");
调用头条API
0. 示例代码
/// <summary> /// 获取广告计划(新版) /// </summary> /// <param name="advertiserId">广告主ID</param> /// <param name="page">页数,默认值: 1</param> /// <param name="pageSize">页面大小,默认值: 10,最大值:100</param> /// <returns></returns> [HttpGet("get")] public async Task<IActionResult> Get([FromQuery] string advertiserId, [FromQuery]int page = 1, [FromQuery]int pageSize = 10) var url = "https://ad.toutiao.com/open_api/2/ad/get/" + "?advertiser_id=" + advertiserId + "&page=" + page + "&page_size=" + pageSize; var response = await _restClient.GetAsync<DynamicResponse>(url, _cache.Get<string>(ToutiaoCacheKey.AccessToken)); response.EnsureSuccess(); return Ok(response);
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
"advertiser_id": 0, "campaign_name": "xxx", "budget": 1000, "landing_type": "LINK", "budget_mode": "BUDGET_MODE_DAY"
2. 新建一个cs文件,点击Visual Studio菜单栏的“编辑” -> “选择性编辑” -> “保存json为类”
3. 设置JsonProperty(可选,规范、美观考虑)
其实,头条的开发文档中有提供操作API的示例json,但是示例json的字段有些不全,而请求API的结果基本包含了操作API的字段。
因此,可以使用操作API的返回json来生成操作请求。同时,这个小工具也可以做一些前期的简单查询。
源码地址
https://github.com/ErikXu/ToutiaoApi
超级简单的下载今日头条和西瓜视频的方法
我们每天用今日头条看新闻资讯,有时候看到一个视频,想要保存下来,但今日头条App里没有提供保存视频的功能。这个时候我们需要借助第三方工具来下载视频,今天介绍一个超级好用的工具,不需要安装任何软件和插件,并... 查看详情
微信小程序-今日头条案例
github地址: https://github.com/HowName/toutiao项目为仿今日头条,使用了百度ApiStore接口查询数据,使用微信组件/api有封装请求方法,底部tab,启动页动画,loading,scroll-view,swiper,列表页支持上下拉加载更多效果图: 启动欢迎页,几行代... 查看详情
今日头条广告投放技巧干货:落地页分析工具
...遇到过类似这样的问题,那你一定不能错过今天这篇今日头条广告投放干货:落地页分析工具。作为行业领先的效果广告平台,今日头条通过智能推荐技术的不断精进 查看详情
关于今日头条小程序(字节跳动小程序)相关问题(代码片段)
上周突然遇到让开发今日头条小程序(字节跳动小程序)的需求,然后看了下文档发现真的简陋。而且文档有错别字。槽点有点多。但是和老版本的小程序相差不多,然后我就抱着试一试的心态,真的是试一试把微信小程序换了... 查看详情
如何在头条做营销:2022今日头条营销价值洞察报告.pdf(附下载链接)
本报告共包含如下四大部分:1、趋势:品牌内容营销难题;2、人群:今日头条人群特征;3、内容:今日头条内容生态;4、商业:今日头条商业生态。更多细节和行研干货资料请到小程序省时查报告中查看全文并下载。 查看详情
如何在今日头条app上投放广告?
今日头条的广告投放方式:1、创建哪类广告?今日头条广告主要的3个广告位置:应用下载/落地页信息流/段子落地页信息流。应用下载即点击广告直接跳转到应用下载,iOS直接跳转到appstore,安卓直接下载包;落地页信息流则是... 查看详情
今日头条seo研究,值得深思的5个问题
在做SEO的过程中,实际上,我并不是“技术挂”更多的是基于搜索原理与大量的实战,总结相关的经验,这么多年,经常养成一个小习惯,总是记录一些工作中遇到的一些小问题与小技巧。特别是2017年,12月份开始跟踪熊... 查看详情
今日头条广告投放技巧干货:落地页分析工具
...遇到过类似这样的问题,那你一定不能错过今天这篇今日头条广告投放干货:落地页分析工具。作为行业领先的效果广告平台,今日头条通过智能推荐技术的不断精进,持续帮助广告主提升转化。尤其是今天给大... 查看详情
今日头条和今日头条极速版有什么区别
3C数码您的浏览器不支持HTML5视频zymedia(\'video\')参考技术A今日头条和今日头条极速版区别为:安装包大小不同、占用运行内存不同、特色功能不同。一、安装包大小不同1、今日头条普通版:今日头条普通版的安装包大小为22.8M。2... 查看详情
新闻网站电脑版带手机版源码,仿东方头条,今日头条,搜狐自媒体网站帝国cms定制
专业定制新闻网站,仿东方头条,今日头条,搜狐自媒体网站源码开发,支持二级域名显示,新闻资讯聚合的头条新闻资讯,内容包括今日头条、头条新闻、社会热点、国内国际快讯、军事、明星、八卦、娱乐、时尚、体育等各... 查看详情
今日头条
lyx相信大家都很熟悉,但是lyx被数学ak是怎么一回事呢?接下来让小编带大家看一看吧。lyx被数学ak其实就是 lyx被数学ak的发生,到底需要如何做到,不lyx被数学ak的发生,又会如何产生。lyx被数学ak因何而发生?lyx被数学ak,... 查看详情
今日头条架构演进之路——高压下的架构演进专题(含ppt)
今日头条架构演进之路——高压下的架构演进专题(含PPT)导读:高可用架构在6月25日举办了『高压下的架构演进』专题沙龙,进行了闭门私董会研讨及对外开放的四个专题的演讲,期望能促进业界应对峰值方法及工具的讨论,... 查看详情
8.22今日头条笔试
这次套路深啊,怎么还有改错题!。上来看题,每个题目的输入数据都很大,果断上scanf,printf,千万不能用cin,cout1.右上角的点,我的思路是先对每一行去重(题目好像说没有重的点耶!),每一行只有最右边的点才是候选点,然... 查看详情
如何区分今日头条与今日头条极
参考技术A今日头条和今日头条极速版区别有:内存大小不一样、定位人群不一样、功能特色不一样、界面设计不一样。1、内存大小不一样今日头条极App:4.7M。今日头条极速版App:安装包4.7M。2、定位人群不一样普通版:面向的... 查看详情
“今日头条”和“今日头条极速版”有啥不同?
...A面对客户人群不一样,界面不一样,功能体验不一样。今日头条界面比较复杂,体验功能更加多元化。今日头条极速版界面简单,功能体验比较少。今日头条:基于个性化推荐引擎技术,根据每个用户的兴趣、位置等多个维度... 查看详情
今日头条的惊惶时刻
今日头条到底怎么了?昨天上午,国家知识产权局用一纸决定书驳回了今日头条关于UC一条专利的无效宣告请求,这意味着今日头条很可能要面临巨额的专利侵权罚款。不过UC并不是唯一和今日头条“对簿公堂”的企业。在1月26... 查看详情
今日头条的核心架构解析
今日头条创立于2012年3月,到目前仅4年时间。从十几个工程师开始研发,到上百人,再到200余人。产品线由内涵段子,到今日头条,今日特卖,今日电影等产品线。一、产品背景今日头条是为用户提供个性化资讯客户端。下面就... 查看详情
今日头条
<resources><stringname="app_name">头条</string><stringname="openDrawer">今日头条</string><stringname="closeDrawer">用户目录</string></resources>/****/<?xmlvers 查看详情