SellyCloudSDK_demo/Example/SellyCloudSDK/VideoCall/TokenGenerator.m

49 lines
1.5 KiB
Objective-C

//
// TokenGenerator.m
// SellyCloudSDK_Example
//
// Created by Caleb on 20/11/25.
// Copyright © 2025 Caleb. All rights reserved.
//
#import "TokenGenerator.h"
#define KAppId @"demo-app"
#define KSecret @"CHANGE_ME"
@implementation TokenGenerator
+ (NSString *)generateTokenWithUserId:(NSString *)userId
callId:(NSString *)callId
{
// 当前时间戳(秒)
long signTime = (long)[[NSDate date] timeIntervalSince1970];
long exprTime = signTime + 600; // 10 分钟后过期
// payload 拼接
NSString *payload = [NSString stringWithFormat:@"%@%@%@%ld%ld",
KAppId, userId, callId, signTime, exprTime];
// HMAC-SHA256 计算
const char *cKey = [KSecret cStringUsingEncoding:NSUTF8StringEncoding];
const char *cData = [payload cStringUsingEncoding:NSUTF8StringEncoding];
unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
// 转 hex 字符串
NSMutableString *sign = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH * 2];
for (int i = 0; i < CC_SHA256_DIGEST_LENGTH; i++) {
[sign appendFormat:@"%02x", cHMAC[i]];
}
// 拼接最终 Token
NSString *token = [NSString stringWithFormat:
@"appid=%@&userid=%@&callid=%@&signtime=%ld&exprtime=%ld&sign=%@",
KAppId, userId, callId, signTime, exprTime, sign];
return token;
}
@end