查看 Agora 的令牌生成 (https://docs.agora.io/en/Interactive%20Broadcast/token_server_nodejs?platform=Node.js(。
生成令牌时,我们需要提供用户的角色。在 Go API 中,有 4 个角色定义:与会者、发布者、订阅者和管理员。
如果使用 4 个角色中的任何一个生成令牌,令牌有何不同?与会者与订阅者有何不同,发布者与管理员有何不同?
谢谢
您所指Role
是一个任意结构,用于建立可用于设置权限的可能用户角色的示例层次结构。
如果你看一下 Agora 代币生成器(Golang 示例(,在第 42 行,它使用 Role 来分配一组权限。
if (role == RoleAttendee) || (role == RolePublisher) || (role == RoleAdmin) {
token.AddPrivilege(accesstoken.KPublishVideoStream, privilegeExpiredTs)
token.AddPrivilege(accesstoken.KPublishAudioStream, privilegeExpiredTs)
token.AddPrivilege(accesstoken.KPublishDataStream, privilegeExpiredTs)
}
在代码中,每个角色都获得相同的权限(这在生产环境中通常无用(,因此您需要更新代码以具有所需的任何用户角色,以便为该令牌设置适当的权限。
这里设置的权限是为了让 Agora 后端知道用户可以在频道中执行哪些操作,从基本joinCahnnel
到publishStream
再到publishVideoCdn
。
可用权限:
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( 才能请求在您的账户上启用它。