Flutter將視頻或圖文分享到抖音

来源:https://www.cnblogs.com/hhsk/p/18223960
-Advertisement-
Play Games

如何在 Flutter 中分享視頻到抖音 話不多說,先上效果: 原理 發佈內容至抖音 H5 場景_移動/網站應用_抖音開放平臺 (open-douyin.com) 本教程沒有接入抖音原生 SDK 以及任何第三方插件,使用抖音的 h5 分享介面配合 url_launcher 插件實現跳轉至抖音分享頁面 ...


如何在 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>


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 如何對MySQL中的資料庫進行優化,如何優化數據表中的數據類型、刪除重覆、冗餘索引;如何設計資料庫,資料庫的範式要求。如何對數據表進行分析、檢查、優化、拆分。 ...
  • 在當今的互聯網時代,隨著用戶數量和請求量的不斷增加,系統的性能和穩定性面臨著巨大的挑戰。限流演算法作為保障系統穩定性的重要手段之一,被廣泛應用於各種服務和應用中。限流的核心目的是對某一時間視窗內的請求數進行限制,保持系統的可用性和穩定性,防止因流量暴增而導致的系統運行緩慢或宕機。 常見限流演算法對比 常 ...
  • 【標題】ODBC驅動類問題定位方法 【需求分類】故障分析 【關鍵字】ODBC 【需求描述】由於我們的ODBC介面目前尚不完善,經常會遇見ODBC介面能力不足導致應用功能無法運行的問題,需要定位手段確定底層是哪個介面報錯 【需求原因分析】方便一線資料庫管理員初步分析故障 【分析方法】 ● 由於我們的O ...
  • MySQL語句優化包括創建合適的索引、使用覆蓋索引、避免不必要的子查詢、通過 EXPLAIN 分析查詢計劃、進行批量操作、減少鎖定範圍、使用預編譯語句和查詢緩存,以顯著提高查詢性能和資料庫運行效率。 ...
  • 一、概述 1.什麼是語言基礎類庫 語言基礎類庫,也稱為標準庫或核心庫,是編程語言提供的一組內置的基礎功能和常用工具的集合。它通常包含了各種數據結構、演算法、輸入輸出處理、字元串處理、日期時間處理、文件操作、網路通信等功能,為開發者提供了便捷的編程介面,以減少開發工作量並提高代碼的可讀性和可維護 ...
  • 前言 請求響應是指客戶端發送請求給伺服器,伺服器接收到請求後返回的響應。響應包含了伺服器處理請求的結果,並將結果返回給客戶端。 頁面調試是指在開發過程中,通過調試工具分析頁面的運行狀況,查找問題和修複錯誤。常用的頁面調試工具包括瀏覽器的開發者工具和調試插件,可以檢查頁面的網路請求、HTML代碼、 ...
  • 在Android啟動過程-萬字長文(Android14)中介紹了Android系統的啟動過程,本篇文章將繼續介紹桌面應用Launcher。 一、Launcher介紹 在Android啟動過程-萬字長文(Android14)中提到Launcher是Android系統啟動後,由SystemServerA ...
  • 前言 Cookie是一種存儲在用戶電腦上的小文本文件,用於在用戶訪問網站時存儲和提取信息。它由網站伺服器發送到用戶的瀏覽器,並存儲在用戶的電腦上。每當用戶訪問該網站時,瀏覽器將發送該Cookie回伺服器,以用於識別用戶和存儲用戶的首選項和其他信息。 Cookie可以用於跟蹤用戶的行為,例如記 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...