着眼于Agora(https://docs.agora.io/en/Interactive%20Broadcast/token_server_nodejs?platform=Node.js)的代币生成。
我们需要在生成令牌时提供用户角色。在Go API中,有4个角色定义:参与者,发布者,订阅者和管理员。
如果使用四种角色中的任何一种来生成令牌,令牌会有什么不同?与会者与订阅者有何不同,发布者与管理员有何不同?
谢谢
答案 0 :(得分:2)
您所指的Role
是一个任意结构,用于建立示例用户层次结构的示例层次结构,这些用户角色可用于设置特权。
如果您查看Agora令牌生成器(Golang example),在Line 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
到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)才能在您的帐户中启用该请求。