# DyJava
**Repository Path**: sshling/dy-java
## Basic Information
- **Project Name**: DyJava
- **Description**: DyJava 是一款功能强大的抖音 Java 开发工具包(SDK),支持抖音各个应用 OpenAPI 快速调用,包括但不限于移动/网站应用、抖音开放平台、抖店、TikTok 和抖音小程序等。DyJava 致力于简化开发流程,提高开发效率,让开发者能够更专注于创新和业务逻辑的实现。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 243
- **Created**: 2025-02-01
- **Last Updated**: 2025-02-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README

[](https://gitee.com/dromara/dy-java/stargazers)
[](https://gitee.com/dromara/dy-java/members)
[](https://gitee.com/dromara/dy-java/tree/v1.0.0.0/)
[](https://gitee.com/dromara/dy-java/blob/master/LICENSE)
## 一、关于 DyJava
### 1.1、简介
DyJava 是一款功能强大的抖音 Java 开发工具包(SDK),支持抖音各个应用 OpenAPI 快速调用,包括但不限于移动/网站应用、抖音开放平台、抖店和抖音小程序等。
DyJava 致力于简化开发流程,提高开发效率,让开发者能够更专注于创新和业务逻辑的实现。
### 1.2、设计使命
> 抖音开发,可以更简单。
DyJava 的初心就像 Slogan 一样很简单纯粹:
* 助力开发者高效快捷接入抖音开放平台,提高开发效率,推动平台发展。
但假如说 DyJava 比抖音开放平台 OpenAPI 更好用一些,那一定是因为 DyJava 站在了抖音开放生态的肩膀上。
所以在后续 DyJava 开源社区的发展中,我们还将践行更多的使命:
* 提供抖音开放能力的应用实例,助力企业和商家了解抖音生态及其商业价值。
* 携手抖音开放平台,为企业和商家提供优质技术服务,助力其实现商业目标。
### 1.3、愿景
DyJava 精心打磨每一个细节,提供更高效流畅的抖音开发体验,共筑抖音生态的无限可能。
## 二、DyJava 的能力
### 2.1、最新特性
截至 2025-01,DyJava 已完成对抖音移动\网站应用全部 OpenAPI 以及抖音小程序应用大部分 OpenAPI 的支持。
以抖音开放平台最新版文档(2025-01)为基准,具体支持如下:
* **移动\网站应用(全部支持)**
- [x] **个人资料;**
- [x] **关系能力:** 用户数据、粉丝判断、粉丝画像数据;
- [x] **内容能力:** 抖音、投稿任务、视频数据、场景跳转;
- [x] **互动评论:** 视频评论管理、查询关键词视频列表、关键词视频评论管理;
- [x] **私信群聊:** 私信管理、群聊管理、经营工具、意向用户管理;
* **小程序应用(90%支持)**
- [x] **基础能力:** 联合授权、视频能力、线索组件、接口调用凭证、登录、Web化接入、隐私协议、流量主、小程序码与链接、用户信息、抖音号绑定、任务能力、分享、客服、小程序券;
- [x] **触达与营销:** 搜索能力、私信与群聊;
- [x] **支付:** 交易工具、交易系统、抖店绑定;
- [x] **运营:** 解决方案、数据分析、服务类目、直播间能力、抖音开放能力、能力申请、页面结构自定义、普通二维码绑定;
具体以 DyJava 开源仓库能力为准。
### 2.2、开发计划
DyJava 开源组计划于 2025-02-15 前完成对抖音小程序应用全部 OpenAPI 的支持,具体包括如下:
* **小程序应用待支持能力**
- [ ] **基础能力:** 小程序推广计划、内容安全;
- [ ] **触达与营销:** 订阅消息、分发;
- [ ] **支付:** 评价;
- [ ] **运营:** 素材库;
- [ ] **其他:** 小程序视频打通能力、上传资源;
另外因抖音开放平台即将下线小程序 OpenAPI 中 **担保支付** 能力,DyJava 后续也不再支持。
## 三、开发指南
### 3.1、Maven 引用
* **移动\网站应用**
```xml
com.dyj
dy-java-web
${dy-java.version}
```
* **小程序应用**
```xml
com.dyj
dy-java-applet
${dy-java.version}
```
### 3.2、文件配置
``` yml
dyjava:
beanId:
domain: https://open.douyin.com #自定义抖音域名,默认线上域名
ttDomain: https://developer.toutiao.com #自定义头条域名,默认线上域名
agents: #可配置多个应用
- tenantId: 1 #租户名称
clientKey: #应用Key
clientSecret: #应用秘钥
#应用公钥版本
application-public-key-version: 1
#应用私钥文件地址(resources目录下的相对路径)
application-private-key-path: private.key
#应用公钥文件地址(resources目录下的相对路径)
application-public-key-path: public.key
#平台私钥文件地址(resources目录下的相对路径)
platform-private-key-path: private.key
#平台公钥文件地址(resources目录下的相对路径)
platform-public-key-path: public.key
#应用信息加载类,默认读取配置文件 实现IAgentConfigService接口
agentSourceClass: com.dyj.common.service.impl.PropertiesAgentConfigServiceImpl
#令牌信息加载类,默认读取缓存 实现IAgentTokenService接口
tokenSourceClass: com.dyj.common.service.impl.CacheAgentTokenServiceImpl
forest:
backend: okhttp3 # 后端HTTP框架httpclient、okhttp3(默认为 okhttp3)
max-connections: 1000 # 连接池最大连接数(默认为 500)
max-route-connections: 500 # 每个路由的最大连接数(默认为 500)
max-request-queue-size: 500 # 最大请求等待队列大小
max-async-thread-size: 300 # 最大异步线程数
max-async-queue-size: 16 # 最大异步线程池队列大小
timeout: 3000 # 请求超时时间,单位为毫秒(默认为 3000)
connect-timeout: 3000 # 连接超时时间,单位为毫秒(默认为 timeout)
read-timeout: 3000 # 数据读取超时时间,单位为毫秒(默认为 timeout)
max-retry-count: 3 # 请求失败后重试次数(默认为 0 次不重试)
ssl-protocol: TLS # 单向验证的HTTPS的默认TLS协议(默认为 TLS)
log-enabled: true # 打开或关闭日志(默认为 true)
log-request: true # 打开/关闭请求日志(默认为 true)
log-response-status: true # 打开/关闭响应状态日志(默认为 true)
log-response-content: false # 打开/关闭响应内容日志(默认为 false)
async-mode: platform # 异步模式(默认为 platform)
```
### 3.3、使用示例
* **移动\网站应用**
```java
//单租户获取AccessToken
AccessTokenVo accessToken = DyWebClient.getInstance().accessToken(code).getData();
//多租户单应用获取AccessToken
AccessTokenVo accessToken = DyWebClient.getInstance()
.tenantId(1)
.accessToken(code).getData();
//多租户多应用获取AccessToken
AccessTokenVo accessToken = DyWebClient.getInstance()
.tenantId(1)
.clientKey("123")
.accessToken(code).getData();
```
* **小程序应用**
```java
//单租户获取AccessToken
DyAppletClient.getInstance().accessToken(code).getData();
//多租户单应用获取AccessToken
DyAppletClient.getInstance()
.tenantId(1)
.accessToken(code).getData();
//多租户多应用获取AccessToken
DyAppletClient.getInstance()
.tenantId(1)
.clientKey("123")
.accessToken(code).getData();
```
### 3.4、必要说明
* `IAgentConfigService`接口的作用
用来获取`agent`应用信息,默认读取配置文件,从配置文件中读取`agent`应用信息:
````java
public class PropertiesAgentConfigServiceImpl implements IAgentConfigService {
//通过配置文件获取agent应用信息
}
````
如果需要自定义获取`agent`应用信息,只需要实现`IAgentConfigService`接口即可,然后在配置文件中配置`agentSourceClass`即可。
* IAgentTokenService 接口的作用
用来获取`agent`应用`token`,默认读取本地缓存,从缓存中读取`agent`应用`token`:
````java
public class CacheAgentTokenServiceImpl implements IAgentTokenService {
}
````
如果需要自定义获取`agent`应用`token`,只需要实现`IAgentTokenService`接口即可,然后在配置文件中配置`tokenSourceClass`即可(推荐使用)。
## 四、应用案例
### 4.1、官方案例
为了更好地帮助个人或企业开发者用户熟悉抖音开放生态及学习 DyJava 的能力,DyJava 开源社区官方将推出一个抖音开放生态应用案例:**矩链互动(开源版)** 。
矩链互动(开源版)基于 DyJava 抖音开发能力,帮助个人或企业开发者用户快速搭建一套 **社交媒体运营平台框架** ,提升研发效率,降低学习成本。
* **矩链互动(开源版)特性**
- [x] **数据洞察:** Dashboard、账号洞察、作品洞察、粉丝洞察、意向用户洞察;
- [x] **内容生产:** 抖音作品管理;
- [x] **私域营销:** 意向用户管理、粉丝群管理、粉丝/粉丝群标签管理;
- [x] **系统管理:** 抖音授权管理、组织协同管理
具体以开源计划为准。
* **官网&体验环境**
_(封测中,即将开放...)_
* **开源计划**
_(规划中,即将发布...)_
* **特性预览**




### 4.2、社区案例
完整案例登记列表,请【[访问这里](https://gitee.com/sxwdmjy/dy-java/issues/I9G8DI)】查看。
欢迎登记更多的案例,让更多的开发者看到 DyJava。
## 五、参与贡献
我们非常欢迎社区小伙伴通过但不限于以下方式,积极参与到 DyJava 开源社区的建设中来:
* Fork 本仓库
* 新建分支
* 提交代码
* 新建 Pull Request
* 提交 Issue
## 六、联系我们
如果您发现了任何问题或者有任何建议,欢迎加入我们的官方技术交流群(群号:307395193),也可以直接扫码联系我们:

## 七、特别鸣谢
非常感谢以下开源项目对 DyJava 的帮助与支持:
* [forest:声明式与编程式双修的 Java HTTP 客户端框架](https://forest.dtflyx.com/)
## 八、开源协议
DyJava 采用 [Apache 2.0](https://gitee.com/dromara/dy-java/blob/master/LICENSE) 开源协议,个人或企业用户需要确保在分发、修改或使用 DyJava 时,保留我们的原始版权声明、许可条款和任何归属性声明。
我们希望 DyJava 开源社区不仅能促进抖音开发生态的发展,同时也能推动国内开源生态及优质开源软件的发展与合作。