更新记录

1.2.0(2026-04-15)

支持 抖音分享、发布投稿等功能

1.1.1(2026-02-22)

修复 iOS审核问题

1.1.0(2026-02-22)

修复iOS审核问题

查看更多

平台兼容性

uni-app(4.36)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android Android插件版本 iOS iOS插件版本 鸿蒙 鸿蒙插件版本
× × × × × × 5.0 1.0.0 12 1.0.0 12 1.0.0
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

uni-app x(4.36)

Chrome Safari Android Android插件版本 iOS iOS插件版本 鸿蒙 鸿蒙插件版本 微信小程序
× × 5.0 1.0.0 12 1.0.0 12 1.0.0 ×

tt-douyin-open

抖音开放平台 UTS 原生插件,支持 uni-app xuni-app。提供 初始化(register)授权登录(login)分享(share)

share 能力:支持 向抖音投稿发布scene: 'publish' + contentType: 'media',含 feed 投稿转发日常 等,配合 publishModepublishTargetPageuseNewForwardAbility 及鸿蒙 harmonyLandingPage 等,见 utssdk/interface.uts);Android / iOS 另支持 私信分享scene: 'im')。业务通过 getTTDouyinSDK() 取单例。

📚 官方文档抖音开放平台 - 移动应用


📖 目录


SDK 版本信息

平台 版本号
iOS 4.2.4
Android 0.2.0.9
HarmonyOS 0.0.5

🚨 重要提示

⚠️ 必须使用自定义基座(或正式包),否则无法调用原生插件方法。
⚠️ registerlogin / share
⚠️ 鸿蒙loginshare 需配置 redirectUri,且与 harmony-configs/entry/src/main/module.json5skills / uris 一致。
⚠️ Android:分享/授权回调依赖抖音文档中的 包名、签名、Entry Activity 等配置,请在开放平台与工程中按官方说明对齐。


环境配置

前置条件

  1. 抖音开放平台 创建移动应用,获取 ClientKey(代码里 registerappid 传此值)。
  2. 按平台在开放平台配置 包名、签名(Android)Bundle ID(iOS)、鸿蒙应用信息等。

iOS

  1. 编辑 uni_modules/tt-douyin-open/utssdk/app-ios/Info.plistDouyinAppIDURL TypesCFBundleURLSchemes 填写 ClientKeyLSApplicationQueriesSchemesdouyinopensdksnssdk1128 等(以插件内模板为准)。
  2. 在应用 生命周期 中接入插件 Hook(TTDouyinSDKHookProxy),保证抖音 SDK 能收到 冷启动与 URL 回调(与 uni 工程 manifest 配置一致即可)。

Android

在开放平台配置 签名与包名;工程需能拉取插件 config.json 中的 AwemeOpenSDK Maven 仓库。其余按 抖音 Android 集成文档 配置 FileProvider、回调 Activity 等。

HarmonyOS

  1. ohpm:项目根 harmony-configs/.ohpmrc 需能访问字节仓库,例如:
registry=https://ohpm.byted.org/repos/ohpm/,http://artifact.bytedance.com/repository/byted-ohpm/
  1. harmony-configs/entry/src/main/module.json5querySchemes 包含抖音相关 scheme;skills / uris(https applinks) 与代码里 redirectUri 一致;声明 网络权限。完整模板请以 抖音鸿蒙 / OpenHarmony 官方说明 为准。

快速开始

1. 导入插件

uni-app x

import * as douyinSDK from "@/uni_modules/tt-douyin-open";

export default {
  data() {
    return {
      douyin: null as douyinSDK.TTDouyinSDK | null,
    };
  },
  onLoad() {
    this.douyin = douyinSDK.getTTDouyinSDK();
    this.initDouyinSDK();
  },
  methods: {
    initDouyinSDK() {
      /* 见下方「2. 初始化 SDK」 */
    },
  },
};

uni-app

import * as douyinSDK from "@/uni_modules/tt-douyin-open";

export default {
  data() {
    return { douyin: null };
  },
  onLoad() {
    this.douyin = douyinSDK.getTTDouyinSDK();
    this.initDouyinSDK();
  },
  methods: {
    initDouyinSDK() {
      /* 见下方「2. 初始化 SDK」 */
    },
  },
};

2. 初始化 SDK

uni-app x

initDouyinSDK() {
  if (this.douyin == null) return;
  this.douyin.register({
    appid: "你的ClientKey",
    success: () => {
      console.log("抖音初始化成功");
    },
    fail: (err) => {
      console.error("抖音初始化失败", err);
    },
  } as douyinSDK.TTDouyinRegisterOptions);
}

uni-app

initDouyinSDK() {
  if (!this.douyin) return;
  this.douyin.register({
    appid: "你的ClientKey",
    success: () => {
      console.log("抖音初始化成功");
    },
    fail: (err) => {
      console.error("抖音初始化失败", err);
    },
  });
}

功能介绍

抖音授权登录

流程:客户端拿到 code → 服务端用 codeaccess_token → 再取用户信息(见 开放平台服务端文档)。

参数说明(TTDouyinLoginOptions

参数 类型 必填 说明
state string | null 防重放,会原样带回
permissions string[] | null 默认 ["user_info"]
redirectUri string | null 鸿蒙必填 applinks,须与 module.json5uris 一致;Android / iOS 可传 null
callerLocalEntry string | null 鸿蒙回调 UIAbility 名,默认 EntryAbility
success / fail / complete 回调 与类型定义一致

uni-app x 示例

this.douyin!.login({
  state: String(Date.now()),
  permissions: ["user_info"],
  redirectUri: "https://你的域名/你的path",
  callerLocalEntry: "EntryAbility",
  success: (res) => {
    console.log(res.code, res.state);
  },
  fail: (err) => {
    console.error(err);
  },
} as douyinSDK.TTDouyinLoginOptions);

uni-app 示例

this.douyin.login({
  state: String(Date.now()),
  permissions: ["user_info"],
  redirectUri: "https://你的域名/你的path",
  callerLocalEntry: "EntryAbility",
  success: (res) => {
    uni.request({
      url: "https://你的服务端/api/douyin/login",
      method: "POST",
      data: { code: res.code, state: res.state },
    });
  },
  fail: (err) => {
    uni.showToast({ title: "授权失败", icon: "none" });
  },
});

抖音分享

统一调用:this.douyin.share(options)options 类型为 TTDouyinShareOptions

能力概览:

  • 投稿发布:三端均支持通过 scene: 'publish' + contentType: 'media' 走抖音 投稿 / 发布 流程(标题、音乐、贴纸、publishModefeed / forwardDaily)、publishTargetPageedit / publish)、鸿蒙 harmonyLandingPageedit / record)等以 interface.uts 为准)。
  • 私信分享Android / iOS 支持 scene: 'im'media / link / microApp);鸿蒙 当前不支持 im

字段较多(scenecontentTypemediaContentlinkContentpublishModeharmonyLandingPageredirectUristate 等),请以 utssdk/interface.uts 中注释为准

平台行为简述:

平台 说明
Android / iOS 支持投稿发布publish + media)与 私信分享im)。Android 在从抖音返回应用后才会触发 success / fail,不要在调用 share 的同一同步流程里当作已发布完成。
HarmonyOS 支持投稿发布publish + media);im 会失败。需 redirectUrimediaContent.filePaths(本地可读路径,可用选图/选视频返回的路径)。

投稿发布示例:鸿蒙(uni-app x)

this.douyin!.share({
  scene: "publish",
  contentType: "media",
  state: "业务或开放平台 ShareID",
  redirectUri: "https://你的域名/applink路径",
  callerLocalEntry: "EntryAbility",
  harmonyLandingPage: "edit",
  mediaContent: {
    filePaths: ["/本地绝对路径/demo.jpg"],
    mediaType: "image",
  },
  success: () => {},
  fail: (e) => {
    console.error(e);
  },
} as douyinSDK.TTDouyinShareOptions);

投稿发布示例:鸿蒙(uni-app)

this.douyin.share({
  scene: "publish",
  contentType: "media",
  state: "业务或开放平台 ShareID",
  redirectUri: "https://你的域名/applink路径",
  callerLocalEntry: "EntryAbility",
  harmonyLandingPage: "edit",
  mediaContent: {
    filePaths: ["/本地绝对路径/demo.jpg"],
    mediaType: "image",
  },
  success: () => {
    uni.showToast({ title: "已发起分享", icon: "none" });
  },
  fail: (e) => {
    uni.showToast({ title: (e && e.errMsg) || "分享失败", icon: "none" });
  },
});

mediaTypemixfilePaths 需多个路径,具体条数与能力以抖音客户端与开放平台为准。


错误处理

常见 errCode(详见 utssdk/unierror.utsTTDouyinSDKErrors):

errCode 说明
101 未初始化或初始化失败
201 参数或场景不支持(如鸿蒙缺 redirectUri
202 缺少有效 mediaContent
203~206 媒体 / 链接 / 小程序参数问题
208 当前平台不支持该能力(如鸿蒙 im 分享)
209 / 210 客户端或抖音版本、媒体类型限制
999 其它错误,可看 cause 中抖音侧信息

常见问题

  1. 找不到插件方法
    使用 自定义基座 或正式包,不要用未包含本插件的标准基座。

  2. iOS 登录无响应
    检查 ClientKeyURL Scheme

  3. Android 授权或分享无回调
    核对开放平台 签名、包名 及文档要求的 回调 Activity 配置。

  4. 鸿蒙 ohpm 安装失败(ECONNRESET 等)
    多为本机访问 ohpm.byted.org 网络问题,需换网络、代理或放行域名;日志里 CaseSensitive 相关 DEBUG 可忽略。

  5. 鸿蒙提示 redirectUri
    module.json5applinks(uris) 及开放平台配置保持一致。

更多排障请对照 抖音开放平台文档


祝您开发愉快! 🎉

隐私、权限声明

1. 本插件需要申请的系统权限列表:

暂无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

暂无

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无