Tiktok对接和内容发布申请流程

这段时间在搞AI生成视频,希望用户能一键发布到Tiktok,因此研究了一下Tiktok的开发者申请流程,发现好复杂,同时也发现Tiktok的开发也跟我一样,挺草台班子的
在这里插入图片描述

0、流程简述

废话不多说,Tiktok的开发者申请和内容发布,大致的流程:
1、开发者账号注册;
2、内容发布接口权限申请,这个要几天的审核时间;
3、内容发布功能使用审核,这个也要几天的审核时间。
注意:发布接口申请和发布功能申请,是2个不同的审核,也不知道为啥Tiktok要分成2步。
如果仅接口权限申请通过了,而功能使用没审核,那么你可以调用接口,但是:

  • 只能给Tiktok里的private account账号发布内容;
  • 并且上传的内容会被限制为SELF_ONLY仅用户私人查看的模式;
  • 需要用户手动修改个人账号的隐私设置,并把该内容设置为所有人可查看。

在tiktok里修改设置的界面如下,要先手工把Tiktok改成Private account才能接收,基本上跟无法使用差不多:
在这里插入图片描述

下面是完整的申请步骤:

1、开发者账号申请

去 https://developers.tiktok.com/signup 这里使用邮箱注册
这一步没啥好说的,输入一个邮箱,接收一个验证码,再输入密码,就注册成功了。
我用163邮箱注册也没啥问题。

2、内容发布接口权限申请

2.1、先创建app

注:如果是公司使用,建议先创建一个组织(organization),再创建app,把app挂在组织下,
创建组织,是点右上角的My organizations,那边创建。
当然,app挂不挂组织,我也不太清楚区别在哪。
在这里插入图片描述
然后再点击右上角的Manage apps,在页面点击”Connect an app“,
选择上面创建的组织,再输入App name,确定,这里不创建组织:
在这里插入图片描述
点“Confirm”后,会进入app的设置界面,这里会生成你的Client key和Client secret,用于后续的程序对接,不过这个随时可以进到这个页面复制:
在这里插入图片描述

2.2、URL认证

在上面的app界面的顶上,有个按钮“URL properties”,用于向tiktok证明,哪些url或域名,是属于你的。
在Tiktok里,所有的url,不管用于申请(比如审核里填写的官网url)还是用于接口调用(比如发布内容接口使用的视频url),所有的url,都要通过tiktok的认证,否则会无法提交申请,或者接口调用报错。
认证界面:
在这里插入图片描述
点击“Verify properties”,会看到tiktok支持2种认证方式:

  • DNS记录认证:
    输入一个域名,然后tiktok生成一个字符串,让你去DNS服务那边加一个TXT解析记录,
    加好后,点第二张图的“Verify”就可以通过了,如果不通过,说明DNS解析加的有问题:
    在这里插入图片描述
    在这里插入图片描述

  • 使用URL前缀认证:
    输入一个https开头的url,进行认证,然后tiktok会生成一个txt文件,让你上传到这个url下,
    你上传好了,点第二张图的“Verify”就可以通过了,如果不通过,说明上传路径有问题:
    在这里插入图片描述
    在这里插入图片描述

  • 后续再打开“URL properties”窗口,会长这样:
    上面是认证通过的域名或URL前缀,下面是还没认证通过的:
    在这里插入图片描述

2.3、接口权限申请

在上面的app界面里,把必填项填写一下:

2.3.1、基本信息(必填)

  • App icon:你的应用icon,比如官网icon
  • App name:自己定
  • Category:你的应用是什么类型,我选择 Utilities
  • Description:简单描述一下你的应用是干啥的
  • Terms of Service URL:指向你的官网的服务条款说明,必须直接的链接,参考谷歌的https://policies.google.com/terms
  • Privacy Policy URL:指向你的官网的隐私政策说明,必须直接的链接,参考谷歌的https://policies.google.com/privacy
  • Platforms:你的应用是什么平台的,我选择Web
    注意:如果填写URL的时候,提示你去校验URL,请参考上面的【2.2、URL认证】

2.3.2、Products 和 Scopes

暂时跳过App review的填写,先介绍一下下面的Products,因为App review依赖Products。
这个Product指tiktok的服务,你要申请哪些服务,点击“Add products”,
先Add Login Kit,再Add Content Posting API,然后点Done:
在这里插入图片描述
点击了“Done”后,
页面会变成这样:

在这里插入图片描述

可以看到,我们添加了2个Product:

  • Login Kit: 用于调用tiktok的登录和授权窗口,进行用户基本信息获取和能力授权;
  • Content Posting API:用于上传草稿或直接发布内容,
    注意要开启截图上那个“Direct Post”

下面的Scopes 权限范围,也自动多了3个:

  • user.info.basic:可以读取tiktok用户的基础信息,如tiktok的openId、头像、昵称等
  • video.publish:可以直接发布内容到tiktok用户空间
  • video.upload:可以上传草稿到tiktok用户空间,用户后续可以进行编辑后再发布

2.3.3、App review审查信息

  • Explain how each product and scope works within your app or website. If submitting a revision, include the changes in this version.
    这里要描述一下tiktok的每个product和scope是如果在你的app或web站里工作的,并有一个App Review Guidelines指南让你参考,
    还要你提供一个你的app或web站的工作视频来演示:
    注:我在2024年10月还没有这部分内容,现在突然有了……
    在2.3.2操作完成时,这边会显示你选择的Products和Scopes:
    在这里插入图片描述

2.3.4、OK,可以提交审核了

点击页面右上角的“Submit for review”即可,这里也会让你填写一个申请原因。
这个申请说是正常1周左右,只需定时来这个页面看看状态就好:
在这里插入图片描述

2.3.5、拒审经历

这一步也被拒绝了2次:

  • 首次提交,大概等了3小时,因为icon不清晰,被打回,重新制作了一个png上传;
  • 第二次提交,大概等了2天多,因为terms填写了官网,而不是实际的链接被打回了,url点开必须就是terms的内容;
  • 第三次提交,大概等了1天半,审核通过。
  • 另外就是“URL properties”,一开始使用了www.beinet.cn,然后txt dns记录时,填写@ 一直Verify不通过,
    后面在上面tiktok的申请改成 beinet.cn,txt dns记录还是用@ 校验就通过了。

3、内容发布功能使用审核

参考流程简述,第2步只是接口权限申请,通过了也无法正常使用内容发布功能,但是其它授权、草稿还是可以正常使用的,如果要正常使用内容直接发布功能,要发起这个申请。
参考tiktok说明:https://developers.tiktok.com/doc/content-sharing-guidelines
请务必按这个说明,对你的app或web站进行功能交互设计,不然申请大概率会被打回。

申请填写的入口在这里:https://developers.tiktok.com/application/content-posting-api
里面有3个填写步骤:

3.1、你的组织基本信息:

没啥好说的:
在这里插入图片描述

3.2、你的客户端信息

  • App ID:进入前面的APP管理列表页,那边有App ID:
    在这里插入图片描述

  • Explain the goal of your application and how Content Posting API integration can be beneficial:
    解释一下你的应用为啥要用这个API,对你的应用有啥好处

  • Approximately how many users use your API client(s) to publish videos to TikTok on a daily basis?
    每天有多少用户通过你的客户端发布视频到tiktok
    选择创建一个新应用就好:
    在这里插入图片描述

3.3、你的支持信息

这一步麻烦一点:

  • 要提供一个功能说明的pdf,把你的产品原型,或者最终的交互设计录屏搞一下
  • Please list the API response data fields that your API client will save in its database
    你会保存哪些tiktok的字段,填写:
    publish_id
    upload_url
  • Can your API client be accessed publicly?
    你的API客户端是否可以公开访问?
    如果选是,你要提供相应的测试账号给到tiktok去测试。
    如果选否,你要录个完整功能使用的视频上传给tiktok验收,是否符合上面说的功能交互要求:https://developers.tiktok.com/doc/content-sharing-guidelines
    在这里插入图片描述

3.4、自己审查并提交

确认填写的没问题,就可以提交了,提交结果如下:
按这个说明,审核大概需要2到4周的时间。
我实际提交了2次,第1次拒审,第2次通过,都是等了1天多。
在这里插入图片描述

3.5、审核状态和审核结果,会显示在app页面的Products那边:

待审核状态截图:
在这里插入图片描述
审核通过的截图:
在这里插入图片描述

4、实际开发API对接

4.1、登录与授权对接

参考:https://developers.tiktok.com/doc/login-kit-web?enter_method=left_navigatvideo.publishion

  • 前端要跳转到tiktok授权页面,参考js代码:
location.href = getTikTokUrl();  function getTikTokUrl() {// tiktok的client keyconst client_key = 'xxx';// 让用户授权的scope内容const scope = 'user.info.basic,video.publish,video.upload';// 用户登录并授权后的回调地址const redirect_uri = 'https://test.beinet.cn/tiktokCallback';// 回调地址携带回来的参数,建议是随机串,一般用于防止csrf攻击const state = 'a=1&b=2&c=asdd';// 固定const response_type = 'code';const queryStr =`client_key=${encodeURIComponent(client_key)}&` +`response_type=${encodeURIComponent(response_type)}&` +`scope=${encodeURIComponent(scope)}&` +`redirect_uri=${encodeURIComponent(redirect_uri)}&` +`state=${encodeURIComponent(state)}`;return 'https://www.tiktok.com/v2/auth/authorize/?' + queryStr;
}
  • 上面的代码执行后,会跳转到tiktok的授权页面,这里先借用CapCut的界面:
    在这里插入图片描述
  • 用户授权通过后,会携带如下参数,301跳转到前面url里的redirect_uri:
    code 获取access token用的授权码
    scopes 用户同意的授权,半角逗号分隔
    state 上面请求里携带的值,一般用于防止csrf攻击
    error 如果此字段有值,表示出错
    error_description 错误的具体描述
    需要注意的是:跳转用的是scope,响应的是scopes,多了一个s,两者定义是一样的。

4.2、access_token获取

拿到4.1返回的code后,通过这个接口获取用于后续api调用的access_token.
参考:https://developers.tiktok.com/doc/oauth-user-access-token-management
接口地址:
POST https://open.tiktokapis.com/v2/oauth/token/
Content-Type 必须是 application/x-www-form-urlencoded

请求体参数如下:
client_key 面申请得到的client key,必须跟前端保持一致
client_secret 面申请得到的client secret
code 骤2.1申请授权得到的授权码,注意要 URL decoded.
grant_type 固定为 authorization_code.
redirect_uri 回调地址,必须跟得到code时使用的redirect_uri一致
code_verifier 仅用于移动端和桌面应用,web不需要

响应结构
open_id TikTok用户的唯一标识
scope 用户同意授权的列表,半角逗号分隔
access_token 用于后续通讯的token
expires_in token过期时间,秒,首次签发24小时内有效
refresh_token 用于刷新access_token的令牌,365天内有效
refresh_expires_in refresh_token的过期时间,秒
token_type 固定为Bearer

4.3、刷新access_token

如果access_token过期了,要通过此接口获取新的access_token
参考:https://developers.tiktok.com/doc/oauth-user-access-token-management
POST https://open.tiktokapis.com/v2/oauth/token/
Content-Type 必须是 application/x-www-form-urlencoded

4.4、获取用户基本信息

参考:添加链接描述
GET https://open.tiktokapis.com/v2/user/info/

4.5、查询创作者信息

注:按tiktok要求,如果要直接发布内容,必须先调用此接口查询信息,并在后续流程展示此接口信息,以及进行一些交互处理,比如禁用评论选项。
参考:https://developers.tiktok.com/doc/content-posting-api-reference-query-creator-info?enter_method=left_navigation
POST https://open.tiktokapis.com/v2/post/publish/creator_info/query/

4.6、内容直接发布

把视频直接发布到tiktok用户空间
参考:https://developers.tiktok.com/doc/content-posting-api-get-started?enter_method=left_navigation
POST https://open.tiktokapis.com/v2/post/publish/video/init/

4.7、内容上传到草稿

把视频上传到tiktok用户空间的草稿箱
参考:https://developers.tiktok.com/doc/content-posting-api-reference-upload-video?enter_method=left_navigation
POST https://open.tiktokapis.com/v2/post/publish/inbox/video/init/

4.8、查询上传或发布状态

视频上传或发布会返回一个id,用这个id和这个接口查询发布的结果。
参考:https://developers.tiktok.com/doc/content-posting-api-get-started?enter_method=left_navigation
POST https://open.tiktokapis.com/v2/post/publish/status/fetch/

5、流程图

5.1 授权流程

在这里插入图片描述

5.2、内容发布流程

在这里插入图片描述

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

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

相关文章

Android ART知多少?

Android 虚拟机 ART(Android Runtime)是 Android 平台上的应用程序运行时环境,用于执行应用程序的字节码。ART 自 Android 5.0(Lollipop)开始取代了 Dalvik,成为 Android 的默认运行时环境。本文将从以下几…

黑马嵌入式开发入门模电基础学习笔记

学习视频: 黑马程序员嵌入式开发入门模电(模拟电路)基础 文章目录 背景介绍电流电压组件仿真三极管ne555PCBEDA案例:非接触式电笔案例:电子琴 背景介绍 电流 电压 组件 仿真 三极管 mos管 ne555 PCB EDA 案例:非接触…

Ubuntu 18 EDK2 环境编译

视频:在全新的Ubuntu上从零搭建UEFI的EDK2开发环境 开始:git clone https://github.com/tianocore/edk2.git 开始编译BaseTools前先更新一下子模块:git submodule update --init ,然后:make -C BaseTools/ 问题1&a…

第9章 DIV+CSS布局

9.1 DIVCSS概述 DIVCSS是Web设计标准,它是一种网页的布局方法。与传统中通过表格(table)布局定位的方式不同,它可以实现网页页面内容与表现相分离。DIV组成了网页的格局,CSS则装饰了格局,比如建一栋房子,…

QT QLineEdit失去焦点事件问题与解决

本文介绍如何获得QLineEdit的失去焦点事件和获得焦点的输入框也会触发失去焦点事件的问题! 目录 一、QLineEdit获得失去焦点事件 1.自定义类继承自QLineEdit 2.重写 focusOutEvent 3.使用 二、失去焦点事件问题 1.问题描述 2.问题解决 三、源码分享 lineed…

微信小程序navigateTo:fail webview count limit exceed

theme: nico 你们好,我是金金金。 场景 uniapp编写微信小程序,使用uni.navigateTo跳转的过程中报错如下: 报错意思也非常明显了:errMsg":"navigateTo:fail webview 数量超出限制 排查 排查之前我先贴一下代码 代码非…

HarmonyOS ArkTs 解决流式传输编码问题

工作日志 日期:2024-11-15 标题:HarmonyOS ArkTs 解决流式传输编码问题 问题描述 问题:在处理流式数据的 HTTP 请求时,服务器返回的数据存在编码问题,导致数据无法正确地解码为字符串。部分数据在解码后出现了乱码…

Android Settings 单元测试 | 如何运行单元测试?

背景 在Android Settings 单元测试 | Telephony Network 模块 APN 案例中粗略介绍了单元测试逻辑内容,但是在独立APK里面如何将单元测试跑起来还是有疑问,因为APP不能直接install,无法借助Android Studio直接Run,在安装的一步会报…

flutter字体大小切换案例 小字体,标准字体,大字体,超大字体案例

flutter字体大小切换案例 小字体&#xff0c;标准字体&#xff0c;大字体&#xff0c;超大字体案例 Android iOS设备带有选择记录 我的flutter项目版本 environment: sdk: ‘>3.4.4 <4.0.0’ 图片案例 pubspec.yaml 添加依赖 # 屏幕尺寸适配 https://github.com/OpenF…

编译原理(手绘)

大家好&#xff0c;今天给大家分享一下我自己对c语言编译链接的一点见解&#xff08;本人是学生&#xff0c;有记笔记的习惯&#xff09;&#xff0c;那么今天就给大家分享我的笔记。 以上只是我本人的一些见解&#xff0c;并非绝对&#xff0c;欢迎大家一起交流。 那么今天分…

跳房子(弱化版)

题目描述 跳房子&#xff0c;也叫跳飞机&#xff0c;是一种世界性的儿童游戏&#xff0c;也是中国民间传统的体育游戏之一。 跳房子的游戏规则如下&#xff1a; 在地面上确定一个起点&#xff0c;然后在起点右侧画 n 个格子&#xff0c;这些格子都在同一条直线上。每个格子内…

初识Linux · 共享内存

目录 理解共享内存 Shared memmory code 理解共享内存 前文介绍的管道方式的通信&#xff0c;本文介绍的是进程通信的另外一种方式&#xff0c;即共享内存。但是这种通信方式的特点是只能本地通信&#xff0c;并且不像管道那样有保护机制&#xff0c;这里是没有的。 我们通…

机器学习day5-随机森林和线性代数1

十 集成学习方法之随机森林 集成学习的基本思想就是将多个分类器组合&#xff0c;从而实现一个预测效果更好的集成分类器。大致可以分为&#xff1a;Bagging&#xff0c;Boosting 和 Stacking 三大类型。 &#xff08;1&#xff09;每次有放回地从训练集中取出 n 个训练样本&…

Essential Cell Biology--Fifth Edition--Chapter one (6)

1.1.4.4 Internal Membranes Create Intracellular Compartments with Different Functions [细胞膜形成具有不同功能的细胞内隔室] 细胞核、线粒体和叶绿体并不是真核细胞中唯一的膜包围细胞器。细胞质中含有大量的[ a profusion of]其他细胞器&#xff0c;这些细胞器被单层膜…

基于VUE实现语音通话:边录边转发送语言消息、 播放pcm 音频

文章目录 引言I 音频协议音频格式:音频协议:II 实现协议创建ws对象初始化边录边转发送语言消息 setupPCM按下通话按钮时开始讲话,松开后停止讲话播放pcm 音频III 第三库recorderplayer调试引言 需求:电台通讯网(电台远程遥控软件-超短波)该系统通过网络、超短波终端等无线…

政务数据治理专栏开搞!

写在前面 忙忙碌碌干了一年政务数据治理的工作&#xff0c;从法人数据到自然人&#xff0c;从交通到地理信息等等&#xff0c;突发想法开一个专栏讲一讲政务数据遇到的问题&#xff0c;以及治理的成效&#xff0c;或许有朋友爱看。 政务数据&#xff0c;又称之为政务数据资源&a…

CondaError: Run ‘conda init‘ before ‘conda activate‘解决办法

已经执行了conda init&#xff0c;但是还是会报错CondaError: Run ‘conda init’ before ‘conda activate’ 原因&#xff1a;权限不够 解决办法&#xff1a;以管理员身份运行cmd&#xff0c;然后进入要操作的文件夹下&#xff0c;重新执行 conda init 和 conda activate 就可…

【全面系统性介绍】虚拟机VM中CentOS 7 安装和网络配置指南

一、CentOS 7下载源 华为源&#xff1a;https://mirrors.huaweicloud.com/centos/7/isos/x86_64/ 阿里云源&#xff1a;centos-vault-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里云 百度网盘源&#xff1a;https://pan.baidu.com/s/1MjFPWS2P2pIRMLA2ioDlVg?pwdfudi &…

软考教材重点内容 信息安全工程师 第 4 章 网络安全体系与网络安全模型

4,1 网络安全体系的主要特征: (1)整体性。网络安全体系从全局、长远的角度实现安全保障&#xff0c;网络安全单元按照一定的规则&#xff0c;相互依赖、相互约束、相互作用而形成人机物一体化的网络安全保护方式。 (2)协同性。网络安全体系依赖于多种安全机制&#xff0c;通过各…

让空间计算触手可及,VR手套何以点石成金?

引言 如何让一位母亲与她去世的小女儿“重逢”&#xff1f;韩国MBC电视台《I Met You》节目实现了一个“不可能”心愿。 在空旷的绿幕中&#xff0c;母亲Jang Ji-sung透过VR头显&#xff0c;看到了三年前因白血病去世的女儿Nayeon。当她伸出双手&#xff0c;居然能摸到女儿的…