You need to enable JavaScript to run this app.
实时音视频

实时音视频

复制全文
Token 鉴权
使用 Token 鉴权
复制全文
使用 Token 鉴权

客户端在加入 RTC 房间或登录实时消息服务时,都必须携带有效的 Token 完成鉴权。此 Token 由你的应用服务端根据 RTC AppID、AppKey、RoomID、UserID、时间戳等参数实时生成。

RTC 服务端在收到进房请求时,会校验进房请求中携带的 Token 信息,如果校验不成功,进房会失败。

鉴权流程

整个鉴权生命周期分为两个阶段:首次进房和 Token 过期更新。

说明

你需要自行实现步骤 1、2、3、4、11 的代码逻辑。

  1. 客户端向你的应用服务端申请 Token。
  2. 应用服务端根据 AppID、RTC AppKey、RoomID、UserID、时间戳等信息生成 Token。
  3. 应用服务端将生成的 Token 下发给客户端。
  4. 客户端使用获取到的 Token 申请加入房间。

    加入房间时设置的 uid 和 roomid 需与用于生成 Token 的 uid 和 roomid 保持一致,否则会加入房间失败,并收到错误提示为 ERROR_CODE_INVALID_TOKENonRoomStateChanged 回调。

  5. RTC 服务端验证 Token 的合法性。
  6. 应用客户端收到来自 RTC SDK 的回调,获取加入房间的结果(成功/失败)。
  7. 若生成 Token 时设置了有效期,当 SDK 检测到 Token 的进房权限将在 30 秒内过期时,触发 onTokenWillExpire 回调。

    Token 过期后,用户将被移出房间,并收到 ERROR_CODE_INVALID_TOKEN 回调,错误码是 ERROR_CODE_TOKEN_EXPIRED。需要在申请新的 Token 之后调用 JoinRoom 加入房间。

  8. 此时,如果客户端需要继续进行音视频通话,需要申请新的 Token。
  9. 如步骤 2。
  10. 如步骤 3。
  11. 调用 updateToken 接口,使用新的 Token,更新 Token。

生成 Token

Token 类型生成方式适用场景安全性
临时 TokenRTC 控制台开发与测试:快速验证客户端逻辑,无需部署服务端。有效期固定为 7 天
正式 Token您的应用服务端生产环境:为指定的用户和房间授权,实现精细化权限管理
通配 Token您的应用服务端生产环境:用户需频繁切换房间的场景(如直播 App)。RoomId 为 * 的特殊正式 Token,可加入任意房间。高(需谨慎使用)

生成正式 Token

在您的应用服务端实现 Token 的生成,可以参考以下示例代码(包含了多种语言):

RTC_Token.zip
47.53KB

以 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赋值规则详见参数赋值规范
    ExpireTimeToken 的有效时长,建议设置为 24 小时。不建议设置得过长或永不过期。
    PrivPublishStream 和 PrivSubscribeStreamToken 的发布和订阅权限的有效时长,用于连麦鉴权。至少需要设置其中一个参数才能成功进房,可设置为 0。
    • 如需通过 Token 控制连麦权限,请使用 Native SDK v3.50.3Web SDK v4.60 及以后版本,并联系技术支持团队开通白名单后进行设置。建议与 ExpireTime 相同。
    • Native SDK v3.50.3、Web SDK v4.60 之前的版本,为保留参数,但仍需赋值。例如,设置为 0
  • 相关客户端接口:

    功能AndroidiOSmacOSWindowsLinuxWeb
    使用 Token 进房joinRoomjoinRoom:userInfo:roomConfig:joinRoom:userInfo:roomConfig:joinRoomjoinRoomjoinRoom
    更新 TokenupdateTokenupdateToken:updateToken:updateTokenupdateTokenupdateToken

生成通配 Token

在需要频繁切换房间的场景下,可以使用通配 Token,解决频繁请求 Token 可能造成的进房延误和 Token 服务端压力过大等问题。同一用户使用通配 Token 可以加入不同的 RTC 房间。

  • 生成方法:通配 Token 与普通 Token 生成方式一致,仅需要将 roomID 参数设置为 "*"
  • 使用限制
    • 在使用通配 Token 加入不同房间时,房间内的 userID 不可重复。
    • 仅以下版本的 RTC SDK 支持使用通配 Token:
      • Native SDK:3.19+
      • Web SDK:4.46+
      • 微信小程序 SDK:3.0+
      • Electron、Flutter、Unity SDK:所有版本都支持
  • 注意事项
    • 通配 Token 权限较高,一旦泄露,可能导致非法用户进入任意房间。建议仅在必要场景下使用。
    • 建议仅在通配 Token 中添加订阅流权限,不添加发布流权限;当用户需要在特定房间发言时,再为该房间单独生成一个包含发布权限的 Token,并通过 updateToken 接口动态更新。
    • 通配 Token 过期时,应获取服务端重新生成的通配 Token 更新相关权限。

生成临时 Token

在开发和测试阶段,为快速验证业务逻辑,你可以在 RTC 控制台上生成临时 Token,无需在应用服务端部署 Token 生成服务。

临时 Token 有效期仅为 7 天且安全性低, 仅适用于测试阶段,严禁用于生产环境。项目正式上线前,请务必切换为由你应用服务端生成的正式 Token。

生成方式:前往 RTC 控制台 > 应用管理,选择您的应用,在操作栏单击临时Token

  • 测试音视频通话时:当需要多个设备加入同一个房间进行通话时,请为每个设备都生成一个独立的 Token,且房间 ID 需相同、用户 ID 必须不同。
  • 仅测试实时消息时:房间 ID 可填写任意值,用户 ID 需为目标登录用户。

alt

校验 Token

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

操作步骤

  1. 前往 RTC 控制台 > 应用管理,选择您的应用,在操作栏单击Token校验
  2. 输入您的 Token、RoomId、UserId,单击开始校验
  3. 校验结果会显示在下方。
    alt

更换 AppKey

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

Token 使用常见问题

常见问题参看Token 使用常见问题

最近更新时间:2025.10.20 14:23:28
这个页面对您有帮助吗?
有用
有用
无用
无用