客户端在加入 RTC 房间或登录实时消息服务时,都必须携带有效的 Token 完成鉴权。此 Token 由你的应用服务端根据 RTC AppID、AppKey、RoomID、UserID、时间戳等参数实时生成。
RTC 服务端在收到进房请求时,会校验进房请求中携带的 Token 信息,如果校验不成功,进房会失败。
整个鉴权生命周期分为两个阶段:首次进房和 Token 过期更新。
说明
你需要自行实现步骤 1、2、3、4、11 的代码逻辑。
加入房间时设置的 uid 和 roomid 需与用于生成 Token 的 uid 和 roomid 保持一致,否则会加入房间失败,并收到错误提示为
ERROR_CODE_INVALID_TOKEN的onRoomStateChanged回调。
onTokenWillExpire 回调。
Token 过期后,用户将被移出房间,并收到
ERROR_CODE_INVALID_TOKEN回调,错误码是ERROR_CODE_TOKEN_EXPIRED。需要在申请新的 Token 之后调用JoinRoom加入房间。
updateToken 接口,使用新的 Token,更新 Token。| Token 类型 | 生成方式 | 适用场景 | 安全性 |
|---|---|---|---|
| 临时 Token | RTC 控制台 | 开发与测试:快速验证客户端逻辑,无需部署服务端。有效期固定为 7 天 | 低 |
| 正式 Token | 您的应用服务端 | 生产环境:为指定的用户和房间授权,实现精细化权限管理 | 高 |
| 通配 Token | 您的应用服务端 | 生产环境:用户需频繁切换房间的场景(如直播 App)。RoomId 为 * 的特殊正式 Token,可加入任意房间。 | 高(需谨慎使用) |
在您的应用服务端实现 Token 的生成,可以参考以下示例代码(包含了多种语言):
以 Golang 为例:
var ( // 确保通话时使用的 appID, roomID 和 userID 与用于生成 Token 的相同,否则会导致进房失败。 appID = "xxxxx" appKey = "xxxxx" roomID = "room" // 生成用于登录实时消息服务的 Token 时传空值 userID = "uid" ) t := AccessToken.New(appID, appKey, roomID, userID) // 添加此 Token 的有效时间,两小时过期。过期后,你无法使用此 Token 进房。 t.ExpireTime(time.Now().Add(time.Hour * 2)) // 添加订阅流权限 t.AddPrivilege(AccessToken.PrivSubscribeStream, time.Time{}) // 添加发布流权限 t.AddPrivilege(AccessToken.PrivPublishStream, time.Time{}) // 获取最终生成的 token token,err := t.Serialize()
参数说明:
| 参数 | 说明 |
|---|---|
| appId 和 appKey | 在控制台添加应用时获得,参看开通服务。 |
| roomID 和 userID | 赋值规则详见参数赋值规范。 |
| ExpireTime | Token 的有效时长,建议设置为 24 小时。不建议设置得过长或永不过期。 |
| PrivPublishStream 和 PrivSubscribeStream | Token 的发布和订阅权限的有效时长,用于连麦鉴权。至少需要设置其中一个参数才能成功进房,可设置为 0。
|
相关客户端接口:
| 功能 | Android | iOS | macOS | Windows | Linux | Web |
|---|---|---|---|---|---|---|
| 使用 Token 进房 | joinRoom | joinRoom:userInfo:roomConfig: | joinRoom:userInfo:roomConfig: | joinRoom | joinRoom | joinRoom |
| 更新 Token | updateToken | updateToken: | updateToken: | updateToken | updateToken | updateToken |
在需要频繁切换房间的场景下,可以使用通配 Token,解决频繁请求 Token 可能造成的进房延误和 Token 服务端压力过大等问题。同一用户使用通配 Token 可以加入不同的 RTC 房间。
roomID 参数设置为 "*"。userID 不可重复。在开发和测试阶段,为快速验证业务逻辑,你可以在 RTC 控制台上生成临时 Token,无需在应用服务端部署 Token 生成服务。
临时 Token 有效期仅为 7 天且安全性低, 仅适用于测试阶段,严禁用于生产环境。项目正式上线前,请务必切换为由你应用服务端生成的正式 Token。
生成方式:前往 RTC 控制台 > 应用管理,选择您的应用,在操作栏单击临时Token。

你可以在 RTC 控制台校验已生成的 Token 的正确性和有效期。
操作步骤:

生成 Token 时要使用 AppKey。为保障您的应用安全(比如应对 AppKey 意外泄露的风险),RTC 提供了主/副 AppKey 的安全轮换机制。详细说明及操作,参见更换 AppKey。
常见问题参看Token 使用常见问题。