如何在 Flutter 中分享视频到抖音

话不多说,先上效果:

原理

发布内容至抖音 H5 场景_移动/网站应用_抖音开放平台 (open-douyin.com)

  • 本教程没有接入抖音原生 SDK 以及任何第三方插件,使用抖音的 h5 分享接口配合 url_launcher 插件实现跳转至抖音分享页面
  • 需要分享的资源需要被部署在可被公开访问的服务器上,调用抖音的 h5 分享接口需提供被分享资源的 url
  • 需在自己的服务端进行签名计算,并将结果返回给前端,以供调用抖音的 api

步骤

  1. 抖音开放平台注册 app,拿到 client_keyclient_secret
  2. 生成 client_token
  3. 获取 open_ticket
  4. 在服务端计算签名
  5. 将需要的参数返回给前端
  6. Flutter 拿到从服务端获取的参数 + 视频/图文链接 拉起抖音 App 分享

前端实现

服务端计算签名的部分就不多说了,大家根据官网的教程来就好,返回给前端的数据结构类似这样的:

{
// 服务端设置的 用于计算签名的 随机字符串
"nonceStr": "ae86",
// 签名
"signature": "665f1211738c4f348d093535e2ef93ac",
// 秒级时间戳
"timestamp": "1717054967",
// 分享类型 默认 h5
"shareType": "h5",
"clientKey": "ztfqxgipi39ko49q"
}

前端生成 分享 schema,并调起分享代码:

  Future<void> douyinShare({
// 图片列表
List<String> images = const [],
// 视频 url
String? videoUrl = "",
// 自定义标签
List<String> tagList = const [],
// 标题
required String title,
}) async {
Response response = await dio.get('/<获取签名接口>'); final Map<String, dynamic> param = {
'title': title,
'client_key': response.data['clientKey'],
'nonce_str': response.data['nonceStr'],
'signature': response.data['signature'],
'timestamp': response.data['timestamp'],
'share_type': response.data['h5'],
// 1-直接跳转到发布页 0-跳转到编辑页
'share_to_publish': '1',
}; // 标签
param['hashtag_list'] = json.encode(['自定义标签', '自定义标签2', ...tagList]); // 向 param 中添加图片或视频
if (images.isNotEmpty) {
if (images.length > 1) {
param['image_list_path'] = json.encode(images);
} else {
param['image_path'] = images.first;
}
} else if (videoUrl != "") {
param['video_path'] = videoUrl;
} else {
// error handle
} // 固定写法
final Uri url = Uri(
scheme: 'snssdk1128',
host: 'openplatform',
path: 'share',
queryParameters: param,
); if (await canLaunchUrl(url)) {
await launchUrl(url);
}
}

上述代码只展示了核心逻辑,至于具体的实现就请各位自行决断,例如 错误处理Util 工具类单例模式 等等...

IOS 需要添加应用白名单

抖音的 ApplicationQueriesScheme 为: snssdk1128

ios/info.plist 文件中加入

<key>LSApplicationQueriesSchemes</key>
<array>
<string>snssdk1128</string> <!-- 抖音 -->
...
</array>

Flutter将视频或图文分享到抖音的更多相关文章

  1. Python抖音视频去水印,并打包成exe可执行文件

    前言 抖音里面的视频保存之后,会发现全都带有水印,所以如何解决视频去除水印就很有必要,所以教程来了,本次教程不仅会教大家如何去除视频里的水印,并且教大家将程序制作成exe可执行文件,可以发给你的好友使 ...

  2. 基于vue+uniapp直播项目|uni-app仿抖音/陌陌直播室

    一.项目简介 uni-liveShow是一个基于vue+uni-app技术开发的集小视频/IM聊天/直播等功能于一体的微直播项目.界面仿制抖音|火山小视频/陌陌直播,支持编译到多端(H5.小程序.Ap ...

  3. PHP根据抖音的分享链接来抓包抖音视频

    现在抖音是个很火的短视频平台,上面有许多不错的小视频.今天教大家怎么用PHP技术来获取到抖音上的的内容. 1:打开抖音选中你认为好的视频点击分享,复制链接,然后你会获取到如下的内容: #科比 愿你去的 ...

  4. 第四篇-用Flutter手撸一个抖音国内版,看看有多炫

    前言 这次对布局进行优化,主要包含了首页tabview pageview 以及添加几个按钮的操作过程.主要使用到stack层叠布局,tabpview和pageview,tabview两个页面,一个关注 ...

  5. 第五篇- 抖音的强大对手来了,用Flutter手撸一个抖音国际版,看看有多炫

    前言 由于中间几个月项目天天加班,导致没没时间更新,最近一段时间对前端进行了重构,加了很多页面,如登录.注册.关注.个人中心等,目前写这个纯属业余个人爱好,所以断断续续的继续在做...... 前端地址 ...

  6. Python 爬虫——抖音App视频抓包

    APP抓包 前面我们了解了一些关于 Python 爬虫的知识,不过都是基于 PC 端浏览器网页中的内容进行爬取.现在手机 App 用的越来越多,而且很多也没有网页端,比如抖音就没有网页版,那么上面的视 ...

  7. 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)

    抖音很火,楼主使用python随机爬取抖音视频,并且无水印下载,人家都说天下没有爬不到的数据,so,楼主决定试试水,纯属技术爱好,分享给大家.. 1.楼主首先使用Fiddler4来抓取手机抖音app这 ...

  8. 快速实现抖音的分享&登录(android)

    快速实现抖音分享与第三方登录 准备工作 1.注册抖音的key到抖音开放平台,点击这里查看步骤: 2.集成ShareSDK到Mob官网文档页面查看即可,点击这里查看集成: 业务代码 分享要求: 视频: ...

  9. 抖音分享和授权(iOS)

    准备工作 注册appkey 抖音开放平台 集成sharesdk 下载地址 Xcode配置:urlScheme为注册的appkey, 白名单:douyinsharesdk ,douyinopensdk ...

  10. from appium import webdriver 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)

    使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium) - 北平吴彦祖 - 博客园 https://www.cnblogs.com/stevenshushu/p ...

随机推荐

  1. vue8小时带刻度的时间轴,根据当前时间实时定位

    效果图: 需求: 1 开始时间.结束时间可配置2 时差固定8小时3 根据当前时间初始化位置4 每隔5s刷新位置5 超过结束时间停止刷新 HTML: <div class="time-a ...

  2. vue项目使用elementUI的el-upload组件实现图片上传和文件上传的公共组件封装

    图片上传: <template> <div class="upload-pic"> <el-upload class="upload-dem ...

  3. 基于.NET开源、强大易用的短链生成及监控系统

    前言 今天大姚给大家分享一个基于.NET开源(MIT License).免费.强大易用的短链生成及监控系统:SuperShortLink. 项目介绍 SuperShortLink是一个基于.NET开源 ...

  4. Fiddler使用界面介绍-工具栏

    Fiddler工具栏介绍 1.备注 选择一个或多个请求后点击[备注]图标,可批量给请求添加备注显示在"Comments"一列 2.Replay 选择一个或多个请求后点击[Repla ...

  5. pycham配置GitHub环境【一文了解window上GitHub的基本操作】

    基础用户设置[包含用户登录.密钥生成] 网络配置 外观->系统设置->https代理->检查连接 我这里测试网址是GitHub,连接成功即可后续操作[不成功别找我,我也不知道] gi ...

  6. 【Windows】关闭 Ctrl+Alt+Delete 锁屏

    参考百度经验: https://jingyan.baidu.com/article/9158e0005787c3a2541228b3.html Win + R 运行 gpedit.msc

  7. 如何修复ubuntu的uefi启动——如何将Ubuntu安装入移动硬盘中

    交代一下使用场景,个人平时经常使用Ubuntu系统,由于不喜欢总在一个地方呆但是来回搬电脑又不是十分的方便,于是想到了一个好的方案,那就是把Ubuntu系统安装到移动硬盘中,这样不论是在家还是在实验室 ...

  8. Mybatis-Plus系统化学习之注解的使用

    1.背景 注解的使用 大多数请求下我们默认为有如下对应关系 1.数据库中的表名 ---> java中的实体类名 (下划线与驼峰转换) 2.数据中的id为主键 3.数据库中的字段名---> ...

  9. 武汉市委郭元强书记、盛阅春代市长会见白鲸开源CEO郭炜等嘉宾代表

    2024年6月14日,第二届软件创新发展大会在中国武汉举行.大会云集了来自全国的书数百位院士.专家.知名软件企业负责人,包括中国工程院院士倪光南.中国科学院院士陈十一.国家工业信息安全发展研究中心总工 ...

  10. 在python项目的docker镜像里使用pdm管理依赖

    前言 在 DjangoStarter 项目中,我已经使用 pdm 作为默认的包管理器,不再直接使用 pip 所以部署的时候 dockerfile 和 docker-compose 配置也得修改一下. ...