代码拉取完成,页面将自动刷新
#include <stdint.h>
#include <map>
#include "ZegoServerAssistant.h"
using namespace ZEGO::SERVER_ASSISTANT;
enum ErrorCode
{
success = 0, // 获取鉴权 token 成功
appIDInvalid = 1, // 调用方法时传入 appID 参数错误
userIDInvalid = 3, // 调用方法时传入 userID 参数错误
secretInvalid = 5, // 调用方法时传入 secret 参数错误
effectiveTimeInSecondsInvalid = 6 // 调用方法时传入 effectiveTimeInSeconds 参数错误
};
// 参数
uint32_t appID; // Zego派发的数字ID, 各个开发者的唯一标识
std::string userID; // 用户 ID
std::string secret; // 在获取 token 时进行 AES 加密的密钥
int64_t effectiveTimeInSeconds; // token 的有效时长,单位:秒
// 返回值
ZegoToken04Result result; // 结构体有两个成员: token、 errorInfo, errorInfo 包含 errorCode, errorMessage
void Sample()
{
uint32_t appID = 1;
std::string userID = "demo";
std::string secret = "12345678900987654321123456789012";
uint64_t effectiveTimeInSeconds = 3600;
ZegoServerAssistant zegoServerAssistant;
ZegoToken04Result result = zegoServerAssistant.GenerateToken04(appID, userID, secret, effectiveTimeInSeconds, "");
printf("Sample:%s\n", result.token.c_str());
printf("error code : %d\n", result.errorInfo.errorCode);
}
std::string GeneratePayload(const std::string& roomID, const std::map<int, int>& privilege, const std::vector<std::string>& streamIDList)
{
rapidjson::Document document;
document.SetObject();
rapidjson::Document::AllocatorType& allocator = document.GetAllocator();
ZEGO::JSON_TOOLS::AddMember(document, "room_id", roomID.c_str(), allocator);
rapidjson::Value privilege_(rapidjson::kObjectType);
for (auto member : privilege)
{
ZEGO::JSON_TOOLS::AddMember(privilege_, std::to_string(member.first).c_str(), member.second, allocator);
}
ZEGO::JSON_TOOLS::AddMember(document, "privilege", &privilege_, allocator);
rapidjson::Value streamIDList_(rapidjson::kArrayType);
for (auto streamID : streamIDList)
{
rapidjson::Value streamID_(rapidjson::kStringType);
streamID_.SetString(streamID.c_str(), allocator);
streamIDList_.PushBack(streamID_, allocator);
}
document.AddMember("stream_id_list", streamIDList_, allocator);
std::string result = ZEGO::JSON_TOOLS::JsonTools::rapiJsonToStr(document);
return result;
}
void SampleForRTCRoom()
{
uint32_t appID = 1;
std::string roomID = "demo";
std::string userID = "demo";
std::string secret = "12345678900987654321123456789012";
std::map<int, int> privilege {{kPrivilegeLogin, 1}, {kPrivilegePublish, 1}};
uint64_t effectiveTimeInSeconds = 3600;
std::vector<std::string> streamIDList {"sample", "sample2"};
std::string payload = GeneratePayload(roomID, privilege, streamIDList);
ZegoServerAssistant zegoServerAssistant;
ZegoToken04Result result = zegoServerAssistant.GenerateToken04(appID, userID, secret, effectiveTimeInSeconds, payload);
printf("Sample for rtc room:%s\n", result.token.c_str());
printf("error code : %d\n", result.errorInfo.errorCode);
}
安装 cmake 3.6 或以上版本。
cd <path/to/ZegoServerAssistant>
mkdir build
cd build
cmake ..
make
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。