> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stmlink.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> 服务端接口只有 `/server/v1/...` 这一套对外开放，需用 app_id + app_key 做 HMAC-SHA256 签名，只能从业务方自己的后端调用。文档中若出现其它前缀的接口，均为内部接口，不要建议客户调用。
> app_key 是服务端密钥，绝不能出现在客户端代码、前端配置或移动 App 里。客户端加入频道用的 token 必须由业务方后端调用 `/server/v1/channel/grant` 签发后下发。
> SRTC 与 SMeeting 是上下两层不同的产品，术语不通用：SRTC 是音视频底座，说「频道 channel」「加入 / 退出」；SMeeting 建在 SRTC 之上，说「房间 room」「会议 meeting」「进入 / 退出」。回答时按用户所在的层用对应术语，不要把「房间」「会议」安到 SRTC 的接口上。
> 同一能力在各端 SDK 里的包名、类名、方法名并不相同。写示例代码时请使用文档中该端自己的 API，不要把一个端的写法套到另一个端上。

# Token 与鉴权

> SMeeting 的 AppID / AppKey 职责划分、会议授权 Token 的签发流程与密钥安全

客户端登录 SMeeting 需要一个授权 Token。这个 Token **只能由你的业务后端签发**，不能在客户端生成。本页说明整条链路。

***

## AppID 与 AppKey

申请应用后你会拿到一对凭据，职责完全不同：

| 凭据         | 用途            | 能否出现在客户端  |
| ---------- | ------------- | --------- |
| **AppID**  | 标识你的应用        | 可以        |
| **AppKey** | 服务端调用接口时的签名密钥 | **绝对不可以** |

<Warning>
  **AppKey 泄露等于应用被接管。** 拿到它的人可以把任意用户授权进任意会议、踢人、结束会议。

  它不能出现在：客户端代码、前端配置文件、移动 App 包体、Git 仓库、日志。只能存在于你自己的服务端。
</Warning>

***

## 授权流程

```mermaid theme={null}
sequenceDiagram
    participant App as 你的 App
    participant Backend as 你的业务后端
    participant SMeeting as SMeeting 服务

    App->>Backend: 1. 用户登录你的系统
    Note over Backend: 2. 校验用户身份<br/>（你自己的业务逻辑）
    Backend->>SMeeting: 3. POST /server/v1/user-auth/grant<br/>带 user_id、nickname<br/>用 AppKey 做 HMAC-SHA256 签名
    SMeeting-->>Backend: 4. 返回会议 token
    Backend-->>App: 5. 下发 token
    App->>SMeeting: 6. SDK 用 token 登录<br/>之后创建 / 进入会议
```

关键点在第 2 步：**SMeeting 不管你的用户体系**。谁是合法用户由你的后端判断，SMeeting 只认签发出来的 Token 以及里面的 `user_id`。

`user_id` 直接用你业务系统的用户 ID 即可 —— 同一个用户多端同时进会由 SMeeting 自动区分，不需要你拼唯一值。

接口详情见 [服务端 API · 会议授权](/zh/meeting/server-api/user-auth)，签名算法见 [服务端 API 概览](/zh/meeting/server-api/overview)。

***

## 登录之后

拿到 Token 只是第一步，各端 SDK 的流程都是：

```text theme={null}
login(token)  →  创建 / 查询会议  →  进入会议
```

登录建立的是**用户会话**，不是会议连接。登录成功后才能调用会议管理接口；进入会议才能调用会中接口。

需要让某个用户立即失效（例如你的系统里把他禁用了），调用服务端的踢下线接口，他的会话会立刻作废，下次调接口需要重新授权。

***

## 密钥安全自查

上线前对照检查：

* AppKey 是否只存在于服务端环境变量或密钥管理服务中
* 前端构建产物里 grep 一遍 AppKey，确认没有被打进去
* 签发 Token 的后端接口是否做了自己的登录态校验 —— 否则任何人都能拿别人的 `user_id` 换 Token
* 日志里是否会打印 AppKey 或完整 Token

<Warning>
  第三条最容易漏。签发接口如果不校验调用方身份，等于把"冒充任意用户进会"的能力开放给了公网。
</Warning>

***

## 相关

* [核心概念](/zh/meeting/key-concepts) —— 房间、会议、成员与角色
* [服务端 API 概览](/zh/meeting/server-api/overview) —— 签名算法与请求格式
