抖音开放平台Logo
开发者文档
控制台
  • 移动应用
  • open SDK 概述
  • open SDK 下载
  • open SDK 接入
  • 抖音分享
  • 安卓分享至私信/群
  • Android&iOS 转发内容到抖音
  • iOS分享至私信/群
  • 抖音投稿发布
  • 抖音名片
  • 抖音登录和授权
  • 常见问题
  • 网站应用
  • 安卓分享至私信/群

    收藏
    我的收藏

    前提条件

    支持分享的最低抖音版本为 11.4.0
    在 Android R 的手机上,对于存储到 app 私有目录下面的文件是不允许分享到别的 app 的,所以分享到抖音的功能可能会失效,请开发者及时针对这种情况进行适配。既可以将要分享的文件存储到公开可访问的目录,也可以使用 FileProvider 的方式对分享的文件路径进行临时授权。使用 FileProvider 方式临时授权请参见 Android 分享支持 FileProvider 的方式

    操作步骤

    第一步:准备环境

    接入分享功能前请确保 SDK 环境已配置完毕且获取了相关权限。具体操作请参见 Android 接入
    同时确保在应用的管理后台配置了包名等开发信息。。

    第二步:接入

      1.在 Application 中,初始化 DouYinOpenApiFactory。
    @Override public void onCreate() { super.onCreate(); String clientkey = "[Client Key]"; // 修改为在开发者应用登记页面申请的clientkey DouYinOpenApiFactory.init(new DouYinOpenConfig(clientkey)); }
      2.在 Manifest 中申请权限,注册接收回调 activity。
    <uses-permission android:name="android.permission.INTERNET" /> //如果第三方自定义了接收回调的activity则可以跳过此步骤 <activity android:name=".douyinapi.DouYinEntryActivity" android:launchMode="singleTask" android:taskAffinity="你的包名" android:exported="true"> </activity>

    第三步: 分享内容到抖音好友

    分享图片

    DouYinOpenApi douyinOpenApi = DouYinOpenApiFactory.create(this); // 初始化资源路径 ShareToContact.Request request = new ShareToContact.Request(); ArrayList<String> mUri = new ArrayList<>(); // 注意: 只能传入一张图片,目前只支持单图且为本地图片 // 初始化资源路径,路径请使用FileProvider路径 File file = new File("xxx文件路径"); //此处需要申明FileProvider,详情参考 Android 分享支持 FileProvider 的方式 Uri uri = FileProvider.getUriForFile(context, context.getPackageName() + ".fileProvide", file); //分别给抖音、抖音极速版、抖音火山版授权 context.grantUriPermission(ParamKeyConstants.DOUYIN_PACKAGE_NAME, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION); context.grantUriPermission(ParamKeyConstants.DOUYIN_LITE_PACKAGE_NAME, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION); context.grantUriPermission(ParamKeyConstants.DOUYIN_HOTSOON_PACKAGE_NAME, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION); mUri.add(uri); ImageObject imageObject = new ImageObject(); imageObject.mImagePaths = mUri; MediaContent mediaContent = new MediaContent(); mediaContent.mMediaObject = imageObject; request.mMediaContent = mediaContent; // 判断是否可以分享到联系人 if (douyinOpenApi.isAppSupportShareToContacts()) { // 调起分享 douyinOpenApi.shareToContacts(request); }
    注意: 只能传入一张图片,目前只支持单图且为本地图片

    分享网页

    DouYinOpenApi douyinOpenApi = DouYinOpenApiFactory.create(this); // 分享html ContactHtmlObject htmlObject = new ContactHtmlObject(); // 你的html链接(必填) htmlObject.setHtml("https://www.bytedance.com/"); // 你的html描述(必填) htmlObject.setDiscription("discription"); // 你的html title(必填) htmlObject.setTitle("title"); // 你的html的封面图(远程图片) (选填,若不填,则使用开放平台官网申请时上传的图标) htmlObject.setThumbUrl("https://lf1-cdn-tos.bytegoofy.com/obj/goofy/developer/open_platform_master/static/media/platform-logo.2812fb08.svg"); ShareToContact.Request request = new ShareToContact.Request(); request.htmlObject = htmlObject; // 调起分享 if (douyinOpenApi.isAppSupportShareToContacts()) { douyinOpenApi.shareToContacts(request); }
    注意:如果您想要分享 HTML 链接到抖音联系人,请先到官网管理中心的您应用下的 im.share 权限添加分享链接进行页面链接验证,才可以成功分享。

    分享小程序

    val douyinOpenApiWrapper = DouYinOpenApiFactory.create(activity) val microAppObject = MicroAppObject() microAppObject.appId = "" // 小程序的appid,必传 microAppObject.title = "" //小程序卡片的title,必传 microAppObject.path = "" //点击小程序落地页的path microAppObject.query = "" //点击小程序落地页的query microAppObject.imageId = "" //小程序卡片的封面图,通过OpenAPI获取,必传 val request = Request() request.mMediaContent = MediaContent().apply { mMediaObject = microAppObject } request.mState = "ww" if (douyinOpenApiWrapper?.isSupportApi( CommonConstants.SUPPORT.SHARE_IM, CommonConstants.SUPPORT.CONTACT_API.CONTACT_SUPPORT_MICRO_APP ) == true ) { douyinOpenApiWrapper?.shareToContacts(request) }
    注意:小程序需要跟第三方应用是同一主体下才能分享。
    注意: 小程序封面图接口使用移动应用的client_key去获取。

    第四步:接受返回信息(DouYinEntryActivity demo)

    包名下创建.douyinapi.DouYinEntryActivity,初始化DouYinOpenApi,实现IApiEventHandler接口,在onResp方法中回调授权结果。
    注意:douyinapi.前边的 package 路径需和 app 的包名一致,否则回调将找不到这个类,也可以选择在传分享参数时,通过 <strong>request.callerLocalEntry</strong> 参数来自己指定接收回调的全路径。
    集成方也可自定义接收回调类,例如:request.callerLocalEntry = "com.xxx.xxx...activity";接收回调类需实现 IApiEventHandler,若无指定则默认回调 DouYinEntryActivity
    public class DouYinEntryActivity extends Activity implements IApiEventHandler { DouYinOpenApi douYinOpenApi; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); douYinOpenApi = DouYinOpenApiFactory.create(this); douYinOpenApi.handleIntent(getIntent(), this); } @Override public void onReq(BaseReq req) { } @Override public void onResp(BaseResp resp) { if (resp instanceof ShareToContact.Response) { ShareToContact.Response response = (ShareToContact.Response) resp; Toast.makeText(this, "error code:" + resp.errorCode + " error Msg:" + resp.errorMsg, Toast.LENGTH_LONG).show(); finish(); } } @Override public void onErrorIntent(@Nullable Intent intent) { // 错误数据 Toast.makeText(this, "Intent出错", Toast.LENGTH_LONG).show(); } }
    注意:若你的应用的代码存在混淆情况,调起抖音私信分享之后,不能拿到私信分享结果的回调,请将你接收回调的 activity(DouYinEntryActivity 或者您自定义的回调 activity) 也加入免混淆清单。

    错误码

    resp.errorCode 错误码如下:
    错误码
    描述
    20000
    分享成功
    20001
    未知错误
    20003
    无分享权限(检测一下你的包名和 client key 是否对应,或有无申请该权限)
    20004
    用户手动取消登录
    20005
    用户未授权使用相册
    20006
    网络问题
    20008
    图片个数不符合要求或分享图片路径不符合要求
    20013
    用户手动取消发布
    20017
    无效 URL

    示例 Demo

    提供了一个完整的接入示例 Demo,你可以通过 Demo 直观地查看接入方法。