Flutter将视频或图文分享到抖音
如何在 Flutter 中分享视频到抖音
话不多说,先上效果:
原理
发布内容至抖音 H5 场景_移动/网站应用_抖音开放平台 (open-douyin.com)
- 本教程没有接入抖音原生 SDK 以及任何第三方插件,使用抖音的 h5 分享接口配合
url_launcher
插件实现跳转至抖音分享页面 - 需要分享的资源需要被部署在可被公开访问的服务器上,调用抖音的 h5 分享接口需提供被分享资源的 url
- 需在自己的服务端进行签名计算,并将结果返回给前端,以供调用抖音的 api
步骤
- 在 抖音开放平台注册 app,拿到
client_key
和client_secret
- 生成 client_token
- 获取 open_ticket
- 在服务端计算签名
- 将需要的参数返回给前端
- 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将视频或图文分享到抖音的更多相关文章
- Python抖音视频去水印,并打包成exe可执行文件
前言 抖音里面的视频保存之后,会发现全都带有水印,所以如何解决视频去除水印就很有必要,所以教程来了,本次教程不仅会教大家如何去除视频里的水印,并且教大家将程序制作成exe可执行文件,可以发给你的好友使 ...
- 基于vue+uniapp直播项目|uni-app仿抖音/陌陌直播室
一.项目简介 uni-liveShow是一个基于vue+uni-app技术开发的集小视频/IM聊天/直播等功能于一体的微直播项目.界面仿制抖音|火山小视频/陌陌直播,支持编译到多端(H5.小程序.Ap ...
- PHP根据抖音的分享链接来抓包抖音视频
现在抖音是个很火的短视频平台,上面有许多不错的小视频.今天教大家怎么用PHP技术来获取到抖音上的的内容. 1:打开抖音选中你认为好的视频点击分享,复制链接,然后你会获取到如下的内容: #科比 愿你去的 ...
- 第四篇-用Flutter手撸一个抖音国内版,看看有多炫
前言 这次对布局进行优化,主要包含了首页tabview pageview 以及添加几个按钮的操作过程.主要使用到stack层叠布局,tabpview和pageview,tabview两个页面,一个关注 ...
- 第五篇- 抖音的强大对手来了,用Flutter手撸一个抖音国际版,看看有多炫
前言 由于中间几个月项目天天加班,导致没没时间更新,最近一段时间对前端进行了重构,加了很多页面,如登录.注册.关注.个人中心等,目前写这个纯属业余个人爱好,所以断断续续的继续在做...... 前端地址 ...
- Python 爬虫——抖音App视频抓包
APP抓包 前面我们了解了一些关于 Python 爬虫的知识,不过都是基于 PC 端浏览器网页中的内容进行爬取.现在手机 App 用的越来越多,而且很多也没有网页端,比如抖音就没有网页版,那么上面的视 ...
- 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)
抖音很火,楼主使用python随机爬取抖音视频,并且无水印下载,人家都说天下没有爬不到的数据,so,楼主决定试试水,纯属技术爱好,分享给大家.. 1.楼主首先使用Fiddler4来抓取手机抖音app这 ...
- 快速实现抖音的分享&登录(android)
快速实现抖音分享与第三方登录 准备工作 1.注册抖音的key到抖音开放平台,点击这里查看步骤: 2.集成ShareSDK到Mob官网文档页面查看即可,点击这里查看集成: 业务代码 分享要求: 视频: ...
- 抖音分享和授权(iOS)
准备工作 注册appkey 抖音开放平台 集成sharesdk 下载地址 Xcode配置:urlScheme为注册的appkey, 白名单:douyinsharesdk ,douyinopensdk ...
- from appium import webdriver 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)
使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium) - 北平吴彦祖 - 博客园 https://www.cnblogs.com/stevenshushu/p ...
随机推荐
- CF 1927
G link 定义\({{dp_i}_j}_k\)为考虑完第i个点,最左边没有染色的点为\(j\),最右边没有染色的点为\(k\)的最小数量. 考虑转移(用自己更新别人) 如果不用\(i\),直接转移 ...
- 第零讲:基础架构:一条SQL查询语句是如何执行的
目录 第零讲:基础架构:一条SQL查询语句是如何执行的 正确的认识事物的方式方法(极为重要): sql语句内部的执行过程:(极为重要) MySQL 可以分为 Server 层和存储引擎层两部分. Se ...
- pyqt报错、python报错:src/pyaudio/device_api.c:9:10: fatal error: portaudio.h: 没有那个文件或目录
报错信息: -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /home/devil/anaconda3/envs/91/include -fPIC -O2 ...
- 【转载】 ubuntu18.04/22.04 cmake版本 更新方法
版权声明:本文为CSDN博主「问题生产商」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/github_3958 ...
- NVIDIA显卡原生管理查询功能nvidia-smi的部分使用功能
本文是使用NVIDIA原生管理工具查询NVIDIA显卡使用情况的一些记录(使用远程管理工具的效率没有使用原生管理接口nvml的效率高,有效率需求者建议使用python版本捆绑的nvml库,具体:htt ...
- 从baselines库的common/vec_env/vec_normalize.py模块看方差的近似计算方法
在baselines库的common/vec_env/vec_normalize.py中计算方差的调用方法为: RunningMeanStd 同时该计算函数的解释也一并给出了: https://en. ...
- 英特尔Movidius神经计算棒的介绍
手上有一款英特尔Movidius神经计算棒,本打算疫情结束返回学校,突然得到非官方的通知告诉我只能等到9月份返校了,于是就想起这个被闲置的计算棒了,手上的是1代的计算棒,不过1代的和二代的使用起来方法 ...
- 【运维技巧】海豚调度工作流实例卡在正在停止&任务实例卡在正在运行怎么办?
在大数据调度系统中,,大家可能会碰到任务实例状态更新不及时的情况. 对于Apache DolphinScheduler用户来说,这可能意味着前端显示的任务状态与实际情况不一致,即使任务已经在后台停止运 ...
- 08-canvas绘制表格
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- SMU Summer 2023 Contest Round 15
SMU Summer 2023 Contest Round 15 A. AB Balance 其实就只会更改一次 #include <bits/stdc++.h> #define int ...