更新记录

1.3(2025-05-21)

增加授权登录codeVerifier字段返回。

1.2(2025-05-19)

增加新版SDK授权登录和分享接口。

1.1(2023-08-18)

修复插件android端不能回调问题。

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 16.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:12 - 18

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


TikTok授权分享插件接口说明

注意:使用插件前先到TikTok开放平台申请clientKey,Android绑定包名和签名,ios绑定bundleId,打包时需要对应。

https://developers.tiktok.com/

新版SDK插件接口

1、Android 11以上需要配置通用链接,不然会导致 sdk找不到 tiktokapp 所以就会默认打开浏览器授权。

2、部分国产手机可能国产系统做过很多权限限制,也会默认打开浏览器授权,用 google 虚拟机就没问题。

1. 插件对象

var TikTokAuth = uni.requireNativePlugin('TikTok-Auth');//授权登录插件对象
var TikTokShare = uni.requireNativePlugin('TikTok-Share');//分享插件对象

2. 检查TikTok是否安装

var ret = TikTokAuth.isAppInstalled();
if (res == true) {
    //已安装TikTok
} else {
    //未安装TikTok
}

3. 授权登录

//授权登录
TikTokAuth.authorize({
    clientKey:"awqb20yd4h43j011",//仅Android有效,iOS通过插件下面的TikTokClientKey配置
    scopes:["user.info.basic"],// 用户授权时必选权限
    redirectUri:"https://xxx.xxx.com",//通用链接,Android端redirectUri字段、TikTok后台设置和插件下面的TikTokAuthRedirectUri配置 三者保持一致, iOS端redirectUri字段、TikTok后台设置和Manifest里通用链接配置 三者保持一致
    state:"123"//用于保持请求和回调的状态,授权请求后原样带回给第三方,可传任意String
}, function(res){
    console.log(res);
    uni.showModal({
        content:JSON.stringify(res)
    });
    //res.errorCode  //OK = 0 授权成功, ERROR_UNKNOW = -1 未知错误, ERROR_CANCEL = -2 用户手动取消 更多错误码请参考CommonConstants.java
    //res.errorMsg   //错误消息
    //res.authCode   //临时票据code,用来换取access_token
    //res.codeVerifier   //codeVerifier,用来换取access_token
    //res.state      //第三方程序发送时用于表示其请求的唯一性标志,由第三方程序调openApi.authorize(request)时传入,由抖音终端回传。
    //res.grantedPermissions    //第三方通过用户授权取得的授权域
});

4. 检查相册权限(仅iOS端支持)

//检查授权相册权限
TikTokShare.checkAlbumPermission(function(res){
    console.log(res);
});

5. 分享图片或视频

注:不支持分享网络路径的图片和视频,需要先下载到本地,转换成原生平台的路径,ios无需再次保存相册

var path = plus.io.convertLocalFileSystemURL("uniapp路径");

//分享图片
var imagePath = plus.io.convertLocalFileSystemURL("_doc/9577.jpg");
TikTokShare.share({
    clientKey:"awqb20yd4h43j011",//仅Android有效,iOS通过插件下面的TikTokClientKey配置
    redirectUri:"https://xxx.xxx.com",//仅iOS有效,iOS端redirectUri字段、TikTok后台设置和Manifest里通用链接配置 三者保持一致
    mediaType:0,//类型 0:图片 1:视频
    mediaPaths:[
        imagePath
    ],
    //shareFormat:0,//默认0, 0:DEFAULT, 1:GREEN_SCREEN
    state:""//用于保持请求和回调的状态,授权请求后原样带回给第三方,可传任意String
}, function(res){
    console.log(res);
    //res.errorCode     //参照官方文档说明
    //res.errorMsg
    //res.state
});

//分享视频
var videoPath = plus.io.convertLocalFileSystemURL("_doc/9577.mp4");
TikTok.share({
    clientKey:"awqb20yd4h43j011",//仅Android有效,iOS通过插件下面的TikTokClientKey配置
    redirectUri:"https://xxx.xxx.com",//仅iOS有效,iOS端redirectUri字段、TikTok后台设置和Manifest里通用链接配置 三者保持一致
    mediaType:1,//类型 0:图片 1:视频
    mediaPaths:[
        videoPath
    ],
    //shareFormat:0,//默认0, 0:DEFAULT, 1:GREEN_SCREEN
    state:""//用于保持请求和回调的状态,授权请求后原样带回给第三方,可传任意String
}, function(res){
    console.log(res);
    //res.errorCode     //参照官方文档说明
    //res.errorMsg
    //res.state
});

6. 在manifest.json配置中,ios设置, UrlScheme设置 clientkey和通用链接

/* ios打包配置 */
"ios" : {
    "urltypes" : "awqb20yd4h43j011",
    "dSYMs" : false,
    "urlschemewhitelist" : "awqb20yd4h43j011",
    "capabilities" : {
        "entitlements" : {
            "com.apple.developer.associated-domains" : [
                "applinks:xxx.xxx.com/xxx"
            ]
        }
    }
}

旧版SDK插件接口

1. 插件对象

var TikTok = uni.requireNativePlugin('TikTok-SDK');

2. 在onLoad初始化,只需调用一次

var clientkey = "awqb20yd4h43j011";// 需要到开发者网站申请并替换
TikTok.initWithKey(clientkey);

//检查授权相册权限
TikTok.checkAlbumPermission(function(res){
    console.log(res);
});

3. 检查TikTok是否安装

var ret = TikTok.isAppInstalled();
if (res == true) {
    //已安装TikTok
} else {
    //未安装TikTok
}

4. 授权登录

TikTok.authorize({
    scope:"user.info.basic",// 用户授权时必选权限
    state:""//用于保持请求和回调的状态,授权请求后原样带回给第三方,可传任意String
}, function(res){
    console.log(res);
    //res.errorCode  //OK = 0 授权成功, ERROR_UNKNOW = -1 未知错误, ERROR_CANCEL = -2 用户手动取消
    //res.errorMsg
    //res.authCode   //临时票据code,用来换取access_token
    //res.state      //第三方程序发送时用于表示其请求的唯一性标志,由第三方程序调openApi.authorize(request)时传入,由TikTok终端回传。
    //res.grantedPermissions    //第三方通过用户授权取得的授权域
});

5. 分享图片或视频

注:不支持分享网络路径的图片和视频,需要先下载到本地,转换成原生平台的路径,ios无需再次保存相册

var path = plus.io.convertLocalFileSystemURL("uniapp路径");

//分享图片
var imagePath = plus.io.convertLocalFileSystemURL("_doc/9577.jpg");
TikTok.share({
    imagePaths:[
        imagePath
    ],
    /*videoPaths:[
        videoPath
    ],//imagePaths和videoPaths二选其一//*/
    shareFormat:0,//android必须,0:DEFAULT, 1:GREEN_SCREEN, 仅Android支持
    state:""/*,//用于保持请求和回调的状态,授权请求后原样带回给第三方,可传任意String
    microAppInfo:{
        appId:"ttef9b992670b151ec",
        appTitle:"小程序title",
        appUrl:"pages/movie/index?utm_source=share_wxapp&cityId=10&cityName=%E4%B8%8A%E6%B5%B7",
        description:"小程序描述"
    }, //可选,分享内容携带小程序
    hashtags:[
        "话题"
    ]//可选, 分享内容携带话题//*/
}, function(res){
    console.log(res);
    //res.errorCode     //参照官方文档说明
    //res.subErrorCode  //参考官方文档说明
    //res.errorMsg
    //res.state
});

//分享视频
var videoPath = plus.io.convertLocalFileSystemURL("_doc/9577.mp4");
TikTok.share({
    /*imagePaths:[
        imagePath
    ],//*/
    videoPaths:[
        videoPath
    ],//imagePaths和videoPaths二选其一
    shareFormat:0,//android必须,0:DEFAULT, 1:GREEN_SCREEN, 仅Android支持
    state:""/*,//用于保持请求和回调的状态,授权请求后原样带回给第三方,可传任意String
    microAppInfo:{
        appId:"ttef9b992670b151ec",
        appTitle:"小程序title",
        appUrl:"pages/movie/index?utm_source=share_wxapp&cityId=10&cityName=%E4%B8%8A%E6%B5%B7",
        description:"小程序描述"
    }, //可选,分享内容携带小程序
    hashtags:[
        "话题"
    ]//可选, 分享内容携带话题//*/
}, function(res){
    console.log(res);
    //res.errorCode     //参照官方文档说明
    //res.subErrorCode  //参考官方文档说明
    //res.errorMsg
    //res.state
});

6. 在manifest.json配置中,ios设置, UrlScheme设置 clientkey

/* ios打包配置 */
"ios" : {
    "urltypes" : "awqb20yd4h43j011"
}

隐私、权限声明

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

相册权限

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

插件自身不采集任何数据,插件使用的TikTok开发平台 SDK采集数据请参考其官方说明:https://developers.tiktok.com/

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

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问