为了账号安全,请及时绑定邮箱和手机立即绑定

Agora 安全令牌生成 (Golang)

Agora 安全令牌生成 (Golang)

Go
智慧大石 2022-06-13 15:31:16
查看 Agora 的 Token 生成(https://docs.agora.io/en/Interactive%20Broadcast/token_server_nodejs?platform=Node.js)。我们需要在生成令牌时提供用户的角色。在 Go API 中有 4 个角色定义:参与者、发布者、订阅者和管理员。如果令牌是使用 4 个角色中的任何一个生成的,它们有何不同?与会者与订阅者有何不同,发布者与管理员有何不同?谢谢
查看完整描述

1 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

您所指的Role是一个任意结构,用于建立可用于设置权限的可能用户角色的示例层次结构。


如果您查看 Agora Token Builder(Golang 示例),在第 42 行它使用角色分配一组权限。


    if (role == RoleAttendee) || (role == RolePublisher) || (role == RoleAdmin) {

        token.AddPrivilege(accesstoken.KPublishVideoStream, privilegeExpiredTs)

        token.AddPrivilege(accesstoken.KPublishAudioStream, privilegeExpiredTs)

        token.AddPrivilege(accesstoken.KPublishDataStream, privilegeExpiredTs)

    }

在代码中,每个角色都获得相同的权限(这在生产环境中通常没用),因此您需要更新代码以拥有您想要的任何用户角色,以便为该令牌设置适当的权限。


这里设置的权限是为了让 Agora 后端知道用户可以在频道中执行哪些操作,范围从基本joinCahnnel到.publishStreampublishVideoCdn


可用特权:


type Privileges uint16


const (

    KJoinChannel        = 1

    KPublishAudioStream = 2

    KPublishVideoStream = 3

    KPublishDataStream  = 4


    KPublishAudiocdn           = 5

    KPublishVideoCdn           = 6

    KRequestPublishAudioStream = 7

    KRequestPublishVideoStream = 8

    KRequestPublishDataStream  = 9

    KInvitePublishAudioStream  = 10

    KInvitePublishVideoStream  = 11

    KInvitePublishDataStream   = 12


    KAdministrateChannel = 101

    KLoginRtm            = 1000

)

注意:默认情况下不强制执行令牌特权,因此您必须提交 Jira 票证 ( https://agora-ticket.agora.io ) 以请求在您的帐户上启用它。


查看完整回答
反对 回复 2022-06-13
  • 1 回答
  • 0 关注
  • 303 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信