基于腾讯会议 REST API 实现,采用 OAuth2 Client Credentials 令牌模式,内置令牌缓存与自动刷新。
包信息
- NuGet 包:
Bitzsoft.Integrations.VideoConference.TencentMeeting - 接口:
IVideoConferenceService - 鉴权:OAuth2 Client Credentials(ClientId / ClientSecret + SdkAppId)
- Provider ID:
tencent-meeting
配置
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
ClientId | string | 是 | — | 应用 ID(Client Id) |
ClientSecret | string | 是 | — | 应用密钥(Client Secret) |
SdkAppId | string | 是 | — | 企业 ID(SDK AppId) |
BaseUrl | string | 否 | https://api.meeting.qq.com | 腾讯会议 REST API 基地址 |
OAuthBaseUrl | string | 否 | https://api.meeting.qq.com | OAuth2 令牌端点基地址 |
HttpClientName | string | 否 | VideoConferenceTencentMeeting | 业务 HttpClient 命名 |
TokenHttpClientName | string | 否 | VideoConferenceTencentMeetingToken | 令牌刷新专用 HttpClient 命名 |
{ "VideoConference": { "TencentMeeting": { "ClientId": "your-client-id", "ClientSecret": "your-client-secret", "SdkAppId": "your-sdk-app-id" } }}注册
// 方式一:IConfiguration(默认读取 "VideoConference:TencentMeeting" 配置节)services.AddTencentMeetingVideoConference(configuration);
// 方式二:委托配置services.AddTencentMeetingVideoConference(options =>{ options.ClientId = "your-client-id"; options.ClientSecret = "your-client-secret"; options.SdkAppId = "your-sdk-app-id";});使用示例
var meeting = await service.CreateMeetingAsync(new CreateMeetingRequest{ Subject = "项目周会", StartTime = DateTimeOffset.Parse("2026-08-03T10:00:00Z"), EndTime = DateTimeOffset.Parse("2026-08-03T11:00:00Z"), Attendees = [new() { Email = "alice@example.com", Name = "Alice" }]});
// 邀请参会人await service.InviteAttendeesAsync(new InviteAttendeesRequest{ MeetingId = meeting.MeetingId, Attendees = [new() { Email = "bob@example.com" }]});
// 查询录制var recordings = await service.ListRecordingsAsync(meeting.MeetingId);鉴权机制
- 令牌获取:POST
/v1/open-token,grant_type=client_credentials。 - 令牌缓存:
TencentMeetingTokenManager为 Singleton,双重检查锁,过期前 5 分钟刷新。 - 业务请求:按请求注入
Authorization: Bearer {token}头。 - 令牌失效码
9012/9013/9014触发自愈:清缓存后下次调用自动刷新。
已知限制
所有供应商标记为 Preview——基本流程走通,边界场景可能未覆盖。