io.agora.media.RtcTokenBuilder Maven / Gradle / Ivy
The newest version!
package io.agora.media;
public class RtcTokenBuilder {
public enum Role {
/**
* DEPRECATED. Role_Attendee has the same privileges as Role_Publisher.
*/
Role_Attendee(0),
/**
* RECOMMENDED. Use this role for a voice/video call or a live broadcast, if your scenario does not require authentication for [Co-host](https://docs.agora.io/en/video-calling/get-started/authentication-workflow?#co-host-token-authentication).
*/
Role_Publisher(1),
/**
* Only use this role if your scenario require authentication for [Co-host](https://docs.agora.io/en/video-calling/get-started/authentication-workflow?#co-host-token-authentication).
*
* @note In order for this role to take effect, please contact our support team to enable authentication for Co-host for you. Otherwise, Role_Subscriber still has the same privileges as Role_Publisher.
*/
Role_Subscriber(2),
/**
* DEPRECATED. Role_Attendee has the same privileges as Role_Publisher.
*/
Role_Admin(101);
public int initValue;
Role(int initValue) {
this.initValue = initValue;
}
}
/**
* Builds an RTC token using an int uid.
*
* @param appId The App ID issued to you by Agora.
* @param appCertificate Certificate of the application that you registered in
* the Agora Dashboard.
* @param channelName The unique channel name for the AgoraRTC session in the string format. The string length must be less than 64 bytes. Supported character scopes are:
*
* - The 26 lowercase English letters: a to z.
* - The 26 uppercase English letters: A to Z.
* - The 10 digits: 0 to 9.
* - The space.
* - "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ",".
*
* @param uid User ID. A 32-bit unsigned integer with a value ranging from
* 1 to (2^32-1).
* @param role The user role.
*
* - Role_Publisher = 1: RECOMMENDED. Use this role for a voice/video call or a live broadcast.
* - Role_Subscriber = 2: ONLY use this role if your live-broadcast scenario requires authentication for [Co-host](https://docs.agora.io/en/video-calling/get-started/authentication-workflow?#co-host-token-authentication). In order for this role to take effect, please contact our support team to enable authentication for Co-host for you. Otherwise, Role_Subscriber still has the same privileges as Role_Publisher.
*
* @param privilegeTs Represented by the number of seconds elapsed since 1/1/1970.
* If, for example, you want to access the Agora Service within 10 minutes
* after the token is generated, set expireTimestamp as the current time stamp
* + 600 (seconds).
*/
public String buildTokenWithUid(String appId, String appCertificate,
String channelName, int uid, Role role, int privilegeTs) {
String account = uid == 0 ? "" : String.valueOf(uid);
return buildTokenWithUserAccount(appId, appCertificate, channelName,
account, role, privilegeTs);
}
/**
* Builds an RTC token using a string userAccount.
*
* @param appId The App ID issued to you by Agora.
* @param appCertificate Certificate of the application that you registered in
* the Agora Dashboard.
* @param channelName The unique channel name for the AgoraRTC session in the string format. The string length must be less than 64 bytes. Supported character scopes are:
*
* - The 26 lowercase English letters: a to z.
* - The 26 uppercase English letters: A to Z.
* - The 10 digits: 0 to 9.
* - The space.
* - "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ",".
*
* @param account The user account.
* @param role The user role.
*
* - Role_Publisher = 1: RECOMMENDED. Use this role for a voice/video call or a live broadcast.
* - Role_Subscriber = 2: ONLY use this role if your live-broadcast scenario requires authentication for [Co-host](https://docs.agora.io/en/video-calling/get-started/authentication-workflow?#co-host-token-authentication). In order for this role to take effect, please contact our support team to enable authentication for Co-host for you. Otherwise, Role_Subscriber still has the same privileges as Role_Publisher.
*
* @param privilegeTs represented by the number of seconds elapsed since 1/1/1970.
* If, for example, you want to access the Agora Service within 10 minutes
* after the token is generated, set expireTimestamp as the current time stamp
* + 600 (seconds).
*/
public String buildTokenWithUserAccount(String appId, String appCertificate,
String channelName, String account, Role role, int privilegeTs) {
// Assign appropriate access privileges to each role.
AccessToken builder = new AccessToken(appId, appCertificate, channelName, account);
builder.addPrivilege(AccessToken.Privileges.kJoinChannel, privilegeTs);
if (role == Role.Role_Publisher || role == Role.Role_Subscriber || role == Role.Role_Admin) {
builder.addPrivilege(AccessToken.Privileges.kPublishAudioStream, privilegeTs);
builder.addPrivilege(AccessToken.Privileges.kPublishVideoStream, privilegeTs);
builder.addPrivilege(AccessToken.Privileges.kPublishDataStream, privilegeTs);
}
try {
return builder.build();
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
}