Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge branch 'develop/v3.x' to 'main' #26

Merged
merged 42 commits into from
Mar 9, 2024
Merged
Show file tree
Hide file tree
Changes from 39 commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
a47c032
feat(microapp): 升级公共组件
fudiwei Mar 5, 2024
16c5f69
feat(microapp): 重命名 "ByteDanceMicroApp" → "DouyinMicroApp"
fudiwei Mar 5, 2024
dadc442
feat(microapp): 构造器模式
fudiwei Mar 5, 2024
2001390
docs: 完善文档
fudiwei Mar 5, 2024
89ba25b
feat(microapp): 废弃小程序、小游戏独立的接入点
fudiwei Mar 5, 2024
4bb51dc
feat(microapp): 独立化直播小玩法 API 客户端
fudiwei Mar 5, 2024
5ba374d
feat(microapp): 直播小玩法相关接口自动生成请求签名
fudiwei Mar 5, 2024
db5f38c
feat(microapp): 新增直播小玩法获取题库列表接口
fudiwei Mar 5, 2024
df4b8ba
feat(microapp): 新增直播小玩法抖币支付相关接口
fudiwei Mar 5, 2024
33e9432
style(microapp): clean code
fudiwei Mar 5, 2024
84ff5a6
feat(microapp): 随官方更新小程序 URL Link 相关接口模型
fudiwei Mar 5, 2024
37cdef7
feat(microapp): 新增小程序 URL Schema 相关接口
fudiwei Mar 5, 2024
696ebbe
feat(microapp): 新增小程序二维码 v2 接口
fudiwei Mar 5, 2024
5d19a09
feat(microapp): 随官方更新登录接口模型
fudiwei Mar 5, 2024
4ae273f
feat(microapp): 区分新旧版接口入口点
fudiwei Mar 5, 2024
51c25b5
feat(microapp): 新增线索组件相关接口
fudiwei Mar 5, 2024
4e0b83f
refactor(tiktokshop)
fudiwei Mar 5, 2024
4fc736d
feat(microapp): 新增视频能力相关接口
fudiwei Mar 6, 2024
1acfb33
feat(microapp): 新增搜索能力相关接口
fudiwei Mar 6, 2024
b138671
feat(microapp): 新增任务能力相关接口
fudiwei Mar 6, 2024
dd800e1
feat(microapp): 标记客服链接接口为已废弃
fudiwei Mar 6, 2024
0f65d6f
feat(microapp): 新增内容安全图片检测 v3 接口
fudiwei Mar 7, 2024
1540246
feat(microapp): 变更部分因新旧版接口入口点不同而变化的接口模型
fudiwei Mar 7, 2024
538325c
feat(microapp): 新增用户抖音主页数据相关接口
fudiwei Mar 7, 2024
502fbed
feat(microapp): 新增分享任务相关接口
fudiwei Mar 7, 2024
bec3ef4
feat(microapp): 新增泛知识角色系统抖音号绑定相关接口
fudiwei Mar 7, 2024
747f596
fix(microapp): 修复泛知识课程库添加课程接口模型定义错误
fudiwei Mar 7, 2024
cf329bf
feat(microapp): 新增普通二维码绑定 v3 接口
fudiwei Mar 7, 2024
8065434
feat(microapp): 新增抖音号绑定相关接口
fudiwei Mar 7, 2024
6e0a8ee
feat(microapp): 新增订阅消息 v2 接口
fudiwei Mar 7, 2024
dca8d9e
feat(microapp): 新增推广计划 v2 接口
fudiwei Mar 7, 2024
d2535b2
feat(microapp): 新增流量主 v2 接口
fudiwei Mar 8, 2024
f0517fc
feat(microapp): 新增讲解卡挂载相关接口
fudiwei Mar 8, 2024
995d4a4
feat(microapp): 区分服务商平台新旧版接口入口点
fudiwei Mar 8, 2024
0fbdf73
feat(microapp): 新增服务商平台上传资源 v2 接口
fudiwei Mar 8, 2024
6e7af44
feat(microapp): 新增服务商平台代开发小程序授权 v2 接口
fudiwei Mar 8, 2024
3b9918f
feat(microapp): 新增服务商平台代开发小程序模板管理 v2 接口
fudiwei Mar 8, 2024
28255b5
feat(microapp): 新增服务商平台代开发小程序基础信息管理 v2 接口
fudiwei Mar 8, 2024
fdbd045
feat(microapp): 新增服务商平台代开发小程序开发管理 v2 接口
fudiwei Mar 9, 2024
bdd7c49
feat(microapp): 新增服务商平台代开发小程序备案接口
fudiwei Mar 9, 2024
769422a
docs: 完善文档
fudiwei Mar 9, 2024
ae93f43
feat(microapp): bump version to v3.0.0
fudiwei Mar 9, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
24 changes: 24 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,30 @@

<summary>[展开查看]</summary>

- Release 3.0.0 (2024-xx-xx)

- **新增**:新增 URL Link v2、URL Schema v2、二维码 v2、订阅消息 v2、推广计划 v2、流量主 v2 等相关接口。

- **新增**:新增内容安全图片检测 v3、普通二维码绑定 v3 等相关接口。

- **新增**:新增线索组件、视频能力、搜索能力、任务能力、用户信息、分享等相关接口。

- **新增**:新增小程序能力申请、抖音号绑定等相关接口。

- **新增**:新增泛知识角色系统抖音号绑定相关接口。

- **新增**:独立化直播小玩法 API 客户端,支持自动生成请求签名。

- **变更**:升级公共组件至 v3.0.0。完整变更说明请参阅迁移指南。

- **变更**:重命名客户端 `ByteDanceMicroAppClient` 为 `DouyinMicroAppClient`。

- **变更**:移除部分已废弃接口。

- **修复**:修复泛知识课程库添加课程接口模型定义错误。

- **修复**:修复担保支付相关接口 GET 请求签名错误。(_via_ [GitHub #20](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance/pull/20))

- Release 2.5.0 (2023-07-17)

- **新增**:新增担保支付自动结算结果查询接口。(_via_ [GitHub #12](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance/pull/12))
Expand Down
13 changes: 13 additions & 0 deletions docs/MicroApp/Advanced_Dispose.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
## 如何销毁客户端?

---

本功能来自于公共组件,请参阅公共组件下的相关文档:

> [《SKIT.FlurlHttpClient FAQ:如何销毁客户端(避免内存泄漏)?》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/README.md)

---

### 镜像站点

国内用户如访问 GitHub 网络状况不佳,可在打开上述链接后,手动将域名部分的 **github.com** 替换为 **gitee.com**、剩余路径部分保持不变,即可访问。
4 changes: 2 additions & 2 deletions docs/MicroApp/Advanced_IHttpClientFactory.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
## 如何在 ASP.NET Core 中与 `IHttpClientFactory` 集成?
## 如何与 `IHttpClientFactory` 集成?

---

本功能来自于公共组件,请参阅公共组件下的相关文档:

> [《SKIT.FlurlHttpClient FAQ:如何在 ASP.NET Core 中与 IHttpClientFactory 集成?》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/FAQ_IHttpClientFactory.md)
> [《SKIT.FlurlHttpClient FAQ:如何与 IHttpClientFactory 集成?》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/README.md)

---

Expand Down
2 changes: 1 addition & 1 deletion docs/MicroApp/Advanced_Interceptor.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

本功能来自于公共组件,请参阅公共组件下的相关文档:

> [《SKIT.FlurlHttpClient FAQ:如何使用拦截器?》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/FAQ_Interceptor.md)
> [《SKIT.FlurlHttpClient FAQ:如何使用拦截器?》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/README.md)

---

Expand Down
2 changes: 1 addition & 1 deletion docs/MicroApp/Advanced_JsonSerializer.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

本功能来自于公共组件,请参阅公共组件下的相关文档:

> [《SKIT.FlurlHttpClient FAQ:如何指定 JSON 序列化器?》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/FAQ_JsonSerializer.md)
> [《SKIT.FlurlHttpClient FAQ:如何指定 JSON 序列化器?》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/README.md)

---

Expand Down
20 changes: 10 additions & 10 deletions docs/MicroApp/Basic_EventDeserialization.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,46 +2,46 @@

---

对于字节小程序推送过来的回调通知事件,本库封装了直接解析成事件模型的扩展方法,下面给出一个示例:
对于抖音小程序推送过来的回调通知事件,本库封装了直接解析成事件模型的扩展方法,下面给出一个示例:

```csharp
/* 如果是 JSON 格式的通知内容,以 text 事件为例 */
string callbackJson = "{ ... }";
var callbackModel = client.DeserializeEventFromJson<Events.TextMessageEvent>(callbackJson);
string webhookJson = "{ ... }";
var webhookModel = client.DeserializeEventFromJson<Events.TextMessageEvent>(webhookJson);

/* 如果是 XML 格式的通知内容,以 text 事件为例 */
string callbackXml = "<xml> ... </xml>";
var callbackModel = client.DeserializeEventFromXml<Events.TextMessageEvent>(callbackXml);
string webhookXml = "<xml> ... </xml>";
var webhookModel = client.DeserializeEventFromXml<Events.TextMessageEvent>(webhookXml);
```

完整的回调通知模型定义可以参考项目目录下的 _src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Events_、_src/SKIT.FlurlHttpClient.ByteDance.Api/SDK/ProductApi/Events_、_src/SKIT.FlurlHttpClient.ByteDance.Api/SDK/OpenApi/Events_ 目录。
完整的回调通知模型定义可以参考项目目录下的 _src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Events_、_src/SKIT.FlurlHttpClient.ByteDance.Api/SDK/OpenApi/Events_、_src/SKIT.FlurlHttpClient.ByteDance.Api/SDK/ProductApi/Events_ 目录。

---

### 事件类型:

由于字节小程序会将全部事件推送到同一个回调通知地址上,开发者需要根据事件类型才能决定如何反序列化。
由于抖音小程序会将全部事件推送到同一个回调通知地址上,开发者需要根据事件类型才能决定如何反序列化。

这里给出两种解决方案。

一种是利用 `System.Xml.Linq`:

```csharp
XDocument xDoc = XDocument.Parse(callbackXml);
XDocument xDoc = XDocument.Parse(webhookXml);
string msgType = xDoc.Root?.Element("MsgType")?.Value?.ToUpper();
```

另一种是利用本库的扩展方法:

```csharp
ByteDanceMicroAppEvent eventModel = client.DeserializeEventFromXml(callbackXml);
ByteDanceMicroAppEvent eventModel = client.DeserializeEventFromXml(webhookXml);
string msgType = eventModel.MessageType?.ToUpper();

switch (msgType)
{
case "TEXT":
{
var callbackModel = client.DeserializeEventFromXml<Events.TextMessageEvent>(callbackXml);
var webhookModel = client.DeserializeEventFromXml<Events.TextMessageEvent>(webhookXml);
}
break;
// 省略其他情况
Expand Down
19 changes: 9 additions & 10 deletions docs/MicroApp/Basic_EventSignatureVerification.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,24 @@

> 请先自行阅读:
>
> [《字节小程序文档 - 消息推送客服:验证消息来自今日头条》](https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/component/message-push-customer-service)
> [《抖音小程序文档 - 消息推送客服:验证消息来自今日头条》](https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/component/message-push-customer-service)

同样的,你既可以利用本库提供的 `SHA1Utility` 工具类自行进行签名验证,也可以通过扩展方法实现:

```csharp
/* 在初始化客户端时需指定服务器推送的相关参数 */
var options = new ByteDanceMicroAppClientOptions()
var options = new DouyinMicroAppClientOptions()
{
AppId = "字节小程序 AppId",
AppSecret = "字节小程序 AppSecret",
// 其他配置项略
PushToken = "服务器推送的 Token"
};
var client = new ByteDanceMicroAppClient(options);
var client = DouyinMicroAppClientBuilder.Create(options).Build();

/* 验证字节小程序服务器 */
/* 验证抖音服务器 */
bool ret = client.VerifyEventSignatureForEcho(
callbackTimestamp: "字节小程序回调通知中的 timestamp 字段",
callbackNonce: "字节小程序回调通知中的 nonce 字段",
callbackMessage: "头条回调通知中的 msg 字段",
callbackSignature: "头条回调通知中的 signature 字段"
webhookTimestamp: "抖音小程序回调通知中的 timestamp 字段",
webhookNonce: "抖音小程序回调通知中的 nonce 字段",
webhookMsg: "抖音回调通知中的 msg 字段",
webhookSignature: "抖音回调通知中的 signature 字段"
);
```
20 changes: 10 additions & 10 deletions docs/MicroApp/Basic_Extensions.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,26 @@
如果有某些接口本库尚未支持,你可按照下面的示例自行扩展:

```csharp
/* 继承 ByteDanceMicroAppRequest 实现自定义请求类 */
public class MyFakeRequest : ByteDanceMicroAppRequest
/* 继承 DouyinMicroAppRequest 实现自定义请求类 */
public class MyFakeRequest : DouyinMicroAppRequest
{
[Newtonsoft.Json.JsonProperty("my_fake_props")]
[System.Text.Json.Serialization.JsonPropertyName("my_fake_props")]
public string MyFakeProps { get; set; }
}

/* 继承 ByteDanceMicroAppResponse 实现自定义响应类 */
public class MyFakeResponse : ByteDanceMicroAppResponse
/* 继承 DouyinMicroAppResponse 实现自定义响应类 */
public class MyFakeResponse : DouyinMicroAppResponse
{
[Newtonsoft.Json.JsonProperty("my_fake_props")]
[System.Text.Json.Serialization.JsonPropertyName("my_fake_props")]
public string MyFakeProps { get; set; }
}

/* 扩展 ByteDanceMicroAppClient 方法 */
/* 扩展 DouyinMicroAppClient 方法 */
public static class MyFakeClientExtensions
{
public static async Task<MyFakeResponse> ExecuteMyFakeAsync(this ByteDanceMicroAppClient client, MyFakeRequest request, CancellationToken cancellationToken = default)
public static async Task<MyFakeResponse> ExecuteMyFakeAsync(this DouyinMicroAppClient client, MyFakeRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
Expand All @@ -41,16 +41,16 @@ public static class MyFakeClientExtensions
同样的,你也可自行扩展回调通知事件模型:

```csharp
/* 继承 ByteDanceMicroAppEvent 实现自定义的 JSON 格式的回调通知事件 */
public class MyFakeEvent : ByteDanceMicroAppEvent, ByteDanceMicroAppEvent.Serialization.IJsonSerializable
/* 继承 DouyinMicroAppEvent 实现自定义的 JSON 格式的回调通知事件 */
public class MyFakeEvent : DouyinMicroAppEvent, DouyinMicroAppEvent.Serialization.IJsonSerializable
{
[Newtonsoft.Json.JsonProperty("my_fake_props")]
[System.Text.Json.Serialization.JsonPropertyName("my_fake_props")]
public string MyFakeProps { get; set; }
}

/* 继承 ByteDanceMicroAppEvent 实现自定义的 XML 格式的回调通知事件 */
public class MyFakeEvent : ByteDanceMicroAppEvent, ByteDanceMicroAppEvent.Serialization.IXmlSerializable
/* 继承 DouyinMicroAppEvent 实现自定义的 XML 格式的回调通知事件 */
public class MyFakeEvent : DouyinMicroAppEvent, DouyinMicroAppEvent.Serialization.IXmlSerializable
{
[System.Xml.Serialization.XmlElement("my_fake_props")]
public string MyFakeProps { get; set; }
Expand Down
20 changes: 15 additions & 5 deletions docs/MicroApp/Basic_ModelDefinition.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,19 @@

再有,每个对象的命名与官方文档的接口地址大体保持一致。例如刚刚提到的发送订阅消息,它的接口地址是 `[POST] /apps/message/custom/send`,将其中的反斜杠去掉、并以大驼峰命名法的方式调整它,就可以得到前文提到的几个对象了。如果路由中带有版本信息,那么版本号一般都在结尾处,例如接口 `[POST] /v2/tags/image` 对应的是 `TagsImageV2`。

完整的模型定义可以参考项目目录下的 _src/SKIT.FlurlHttpClient.ByteDance.Api/Models_、_src/SKIT.FlurlHttpClient.ByteDance.Api/SDK/ProductApi/Models_、_src/SKIT.FlurlHttpClient.ByteDance.Api/SDK/OpenApi/Models_ 目录。
完整的模型定义可以参考项目目录下的 _src/SKIT.FlurlHttpClient.ByteDance.Api/Models_、_src/SKIT.FlurlHttpClient.ByteDance.Api/ExtendedSdk/OpenApi/Models_、_src/SKIT.FlurlHttpClient.ByteDance.Api/ExtendedSdk/ProductApi/Models_、_src/SKIT.FlurlHttpClient.ByteDance.Api/ExtendedSdk/RoleApi/Models_、_src/SKIT.FlurlHttpClient.ByteDance.Api/ExtendedSdk/Webcast/Models_ 目录。

---

### 字节小程序开放平台 API 支持情况:
### 抖音小程序开放平台 API 支持情况:

#### 1. 小程序

<details>

<summary>[展开查看]</summary>

| | 字节 API | 备注 |
| | 抖音 API | 备注 |
| :-: | :------------------------------------: | :------------------: |
| √ | 接口调用凭证 | |
| √ | 登录 | |
Expand Down Expand Up @@ -50,7 +50,7 @@

<summary>[展开查看]</summary>

| | 字节 API | 备注 |
| | 抖音 API | 备注 |
| :-: | :----------: | :--: |
| √ | 接口调用凭证 | |
| √ | 登录 | |
Expand All @@ -66,7 +66,7 @@

<summary>[展开查看]</summary>

| | 字节 API | 备注 |
| | 抖音 API | 备注 |
| :-: | :--------------------: | :--: |
| √ | 授权相关接口 | |
| √ | 域名相关接口 | |
Expand All @@ -76,3 +76,13 @@
| √ | 代商家入驻抖音开放平台 | |

</details>

#### 4. 直播小玩法

<details>

<summary>[展开查看]</summary>

| | 抖音 API | 备注 |
| :-: | :------: | :--: |
| √ | 直播能力 | |
Loading
Loading