当前位置: 首页 > news >正文

C#版字节跳动SDK - SKIT.FlurlHttpClient.ByteDance

前言

在我们日常开发工作中对接第三方开放平台,找一款封装完善且全面的SDK能够大大的简化我们的开发难度和提高工作效率。今天给大家推荐一款C#开源、功能完善的字节跳动SDK:SKIT.FlurlHttpClient.ByteDance。

项目官方介绍

可能是全网唯一的 C# 版字节跳动 SDK,封装全部已知的字节跳动 API,包含字节小程序开放平台、抖音开放平台、抖店开放平台、巨量引擎开放平台、TikTok Developer、TikTok Shop Open Platform 等模块,可跨平台,持续随官方更新。

项目特性

  • 基于 Flurl.Http,可与 IHttpClientFactory 集成。

  • 支持 .NET Framework 4.6.1+、.NET Standard 2.0+、.NET Core 2.0+、.NET 5+。

  • 支持 Windows / Linux / macOS 多平台部署。

  • 支持 System.Text.Json(默认)和 Newtonsoft.Json 两种序列化方式。

  • 强类型接口模型。

  • 全异步式编程。

  • 提供 SourceLink 调试符号文件。

  • 完整、完善、完全的字节跳动 HTTP API 封装。

项目模块

字节小程序开放平台(小程序、小游戏)、抖音开放平台、巨量引擎开放平台(头条广告)、TikTok Developer、TikTok Shop Open Platform等。

项目源码

图片

图片

抖音开放平台快速开始

模块功能描述

  • 基于抖音开放平台 API 封装。

  • 提供了抖音开放平台 API 所需的 AES、MD5、SHA-1、SHA-256、HMAC-SHA-256 等算法工具类。

  • 提供了生成授权链接、生成 JSBridge 签名、解析回调通知事件、解密手机号码等扩展方法。

快速入门

安装:

提示:如果你使用 Visual Studio NuGet 管理器图形化界面,请在搜索结果中勾选“包括预发行版”。

# 通过 NuGet 安装
> Install-Package SKIT.FlurlHttpClient.ByteDance.DouyinOpen
或
# 通过 dotnet-tools 安装
> dotnet add package SKIT.FlurlHttpClient.ByteDance.DouyinOpen
初始化:
using SKIT.FlurlHttpClient.ByteDance.DouyinOpen;var options = new DouyinOpenClientOptions()
{ClientKey = "抖音开放平台应用Key",ClientSecret = "抖音开放平台应用密钥"
};
var client = new DouyinOpenClient(options);
请求 & 响应:
using SKIT.FlurlHttpClient.ByteDance.DouyinOpen;
using SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Models;/* 以获取用户信息接口为例 */
var request = new OAuthUserInfoRequest()
{AccessToken = "抖音开放平台的AccessToken",OpenId = "用户唯一标识"
};
var response = await client.ExecuteOAuthUserInfoAsync(request);
if (response.IsSuccessful())
{Console.WriteLine("昵称:" + response.Data.Nickname);Console.WriteLine("头像:" + response.Data.AvatarUrl);
}
else
{Console.WriteLine("错误代码:" + response.Extra?.ErrorCode);Console.WriteLine("错误描述:" + response.Extra?.ErrorDescription);
}

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个Star支持💖。

https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance

优秀项目和框架精选

该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞)。

https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md

相关文章:

  • BLEU: a Method for Automatic Evaluation of Machine Translation
  • 274.【华为OD机试真题】快递员的烦恼(Floyd-Warshall算法—JavaPythonC++JS实现)
  • petalinux_zynq7 驱动DAC以及ADC模块之四:python实现http_api
  • pclpy 可视化点云(多窗口可视化、单窗口多点云可视化)
  • Nginx网络服务
  • python 几种常见的音频数据读取、保存方式
  • React setState同步还是异步
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • 【springBoot】springAOP
  • 信息学奥赛一本通1209:分数求和
  • 【智慧零售】门店管理设备解决方案,为企业数字化运营升级赋能
  • 逻辑回归算法概述
  • Ubuntu20.04 屏幕截图快捷键
  • GptSoVits音频教程
  • 设计模式-创建型模式-原型模式
  • SegmentFault for Android 3.0 发布
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • HTML5新特性总结
  • HTTP--网络协议分层,http历史(二)
  • Making An Indicator With Pure CSS
  • Next.js之基础概念(二)
  • SAP云平台里Global Account和Sub Account的关系
  • Vue组件定义
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 基于webpack 的 vue 多页架构
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 微信小程序设置上一页数据
  • 小试R空间处理新库sf
  • 一道面试题引发的“血案”
  • 一起参Ember.js讨论、问答社区。
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • 昨天1024程序员节,我故意写了个死循环~
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #pragma data_seg 共享数据区(转)
  • #QT(智能家居界面-界面切换)
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • $.ajax()参数及用法
  • (poj1.3.2)1791(构造法模拟)
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (三) diretfbrc详解
  • (转)甲方乙方——赵民谈找工作
  • .NET Core Web APi类库如何内嵌运行?
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET MVC第三章、三种传值方式
  • .NET 材料检测系统崩溃分析
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .net6 webapi log4net完整配置使用流程
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .NetCore部署微服务(二)
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • .skip() 和 .only() 的使用