今日头条marketingapi小工具(.netcore版本)(代码片段)

erik_xu erik_xu     2023-02-01     374

关键词:

前言

  由于工作原因,需要用到今日头条的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,列表页支持上下拉加载更多效果图: 启动欢迎页,几行代... 查看详情

今日头条广告投放技巧干货:落地页分析工具

...遇到过类似这样的问题,那你一定不能错过今天这篇今日头条广告投放干货:落地页分析工具。作为行业领先的效果广告平台,今日头条通过智能推荐技术的不断精进&#x 查看详情

关于今日头条小程序(字节跳动小程序)相关问题(代码片段)

上周突然遇到让开发今日头条小程序(字节跳动小程序)的需求,然后看了下文档发现真的简陋。而且文档有错别字。槽点有点多。但是和老版本的小程序相差不多,然后我就抱着试一试的心态,真的是试一试把微信小程序换了... 查看详情

如何在头条做营销: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 查看详情