nimeet 文档中心
English

服务端 SDK 与 REST 客户端

Node / Java / Go / Python / .NET / PHP 服务端 SDK 的安装、签发 Token、调用 REST 与校验回调签名。

版本 v1.1.0 · 更新于 2026-10-26 · 修订 1

服务端 SDK 解决三件事:签发 Token、调用 REST、校验回调签名。Node / Java / Go / Python / .NET / PHP 六种语言提供同一套语义。

三层结构

层内容对应文档
TokenAccessToken2 / RtcTokenBuilder / RtmTokenBuilder:签发与校验频道 TokenAccessToken2 语义
REST 客户端声网形状的端点封装(频道查询、封禁、录制、推流、水晶球)REST API 参考
回调Agora-Signature(SHA1)/ Agora-Signature-V2(SHA256)校验与信封解析回调接入

安装

语言包 / 引入方式
Node.js / TypeScript@nimeet/server-sdk
Java引入 Java 版服务端 SDK 的 pom.xml 依赖
GoGo module nimeet
Pythonpip install .(无运行时依赖)
.NET / C#NiMeet.ServerSdk.csproj
PHPcomposer require nimeet/server-sdk

三行代码签一个 Token(Node)

typescript
import { NiMeetClient, RtcTokenBuilder2 } from '@nimeet/server-sdk';

const token = RtcTokenBuilder2.buildTokenWithUid(appId, appCertificate, 'weekly-sync', 10001, 'host', 3600, 3600);
const channels = await new NiMeetClient({ baseUrl, customerId, customerSecret }).api.getChannelByAppid(appId, 0, 100);

参数顺序在所有语言里一致:appId, appCertificate, channel, uid, role, tokenTtlSeconds, privilegeTtlSeconds。 Token 的语义(权限位、exp/pexp、通配)见 AccessToken2 语义。

什么时候用 SDK、什么时候直接 HTTP

场景建议
已有后端服务,要签发 Token用 SDK(少写一遍签名)
批量查询/治理频道用 SDK 的类型化封装
依赖注入框架、需要精细控制超时/重试直接 HTTP + 自己的客户端
边缘函数(体积敏感)直接 HTTP(SDK 类型面较大)

回调校验(所有语言同形)

typescript
import { verifyCallbackSignature } from '@nimeet/server-sdk';

// 必须用原始请求体字节,不能先反序列化
const ok = verifyCallbackSignature({
  rawBody,
  signature: headers['agora-signature'],
  signatureV2: headers['agora-signature-v2'],
  secret: process.env.WEBHOOK_SECRET!,
});

事件码与负载见 回调事件参考,重试与对账见 回调接入。

常见问题

现象原因处理
401 invalid_credentialscustomerSecret 是轮换前的旧值从控制台重新获取并更新环境变量
生成的 Token 校验失败用了别的项目的 appCertificate一个项目一套凭证,不要跨项目复用
回调签名永远不匹配用了反序列化后的 JSON 重新序列化用原始 body 字节
Go 模块拉不到模块代理不可达用 replace 指向本地目录
PHP 无运行时环境没有 PHP属环境限制,不是 SDK 问题

本页由文档构建流水线生成 · 2026-10-31 01:24:02 UTC · 文档中心 v1.1.0.

内容依据公开 API 定义.

ni-meet 是自建 RTC PaaS,媒体面基于 LiveKit(Apache-2.0),并与声网 API 兼容。