实时音视频

  • 实时音视频 > 使用指南 > 服务端 >roomToken

    roomToken

    最近更新时间: 2022-02-07 18:16:55

    roomToken 签发服务

    在进入一个实时音视频房间之前,您需要通过自己七牛云账户的 AK/SK 签算出一个 roomToken。roomToken 是一个包含了一次连麦所需要的主要信息的 token,这些信息包括 七牛的账户标识、连麦的应用 ID(appId)、连麦的房间号 (roomName)、连麦的用户名(userId)、有效期等等。这个 token 通过自己七牛账户的私钥进行加密,因为涉及到私钥加密,所以您需要自己搭建一个业务服务来向您的实时音视频应用提供 roomToken。

    RoomToken 的签算逻辑可以参考以下流程,当然,您也可以选择使用 服务端 SDK 来完成这些操作。

    生成 roomToken 作为一个基本功能,各个语言版本的服务端 SDK 都提供了生成它的方法,具体参见各个 SDK 的文档。这里说明一下手动生成 roomToken 的计算方法。

    // 1. 定义房间管理凭证,并对凭证字符做URL安全的Base64编码
    roomAccess = {
        "appId": "<AppID>"
        "roomName": "<RoomName>",
        "userId": "<UserID>",
        "expireAt": <ExpireAt>,
        "permission": "<Permission>"
    }
    roomAccessString = json_to_string(roomAccess) 
    encodedRoomAccess = urlsafe_base64_encode(roomAccessString)
    // 2. 计算HMAC-SHA1签名,并对签名结果做URL安全的Base64编码
    sign = hmac_sha1(encodedRoomAccess, <SecretKey>)
    encodedSign = urlsafe_base64_encode(sign)
    // 3. 将AccessKey与以上两者拼接得到房间鉴权
    roomToken = "<AccessKey>" + ":" + encodedSign + ":" + encodedRoomAccess
    
    参数 类型 说明
    AppID string 房间所属帐号的 app 。
    RoomName string 房间名称,长度为3~64位。可包含大小写字母、数字、中划线(-)、下划线(_),即满足正则表达式 ^[a-zA-Z0-9_-]{3,64}$
    UserID string 请求加入房间的用户 ID。长度为3~50位,可包含大小写字母、数字、中划线(-)、下划线(_),即满足正则表达式 ^[a-zA-Z0-9_-]{3,50}$
    ExpireAt int int64 类型,鉴权的有效时间,传入以秒为单位的 64 位 Unix 绝对时间,token 将在该时间后失效。
    Permission string 该用户的房间管理权限,“admin” 或 “user”,默认为 “user” 。当权限角色为 “admin” 时,拥有将其他用户移除出房间等特权。
    以上内容是否对您有帮助?
  • Close