用于实现小程序内多人音视频对话的功能。
生成签名需要传入四个参数:
参数名 | 说明 |
---|---|
appId | 小程序的 appId |
groupId | 游戏房间的唯一标识,由游戏自己保证唯一 |
nonceStr | 随机字符串,长度应小于 128 |
timeStamp | 生成这个随机字符串的 UNIX 时间戳(精确到秒) |
签名算法为:
// hmac_sha256需要开发者自行引入
signature = hmac_sha256([appId, groupId, nonceStr, timeStamp].sort().join(''), sessionKey)
具体来说,这个算法分为几个步骤:
- 对
appId
groupId
nonceStr
timeStamp
四个值表示成字符串形式,按照字典序排序; - 将排好序的四个字符串拼接在一起;
- 使用
session_key
作为key
,使用hmac_sha256
算法对 2 中的结果字符串做计算,所得结果即为signature
示例:
appId = 'wx20afc706a711eefc'
groupId = '1559129713_672975982'
nonceStr = '8AP6DT9ybtniUJfb'
timeStamp = '1559129714'
session_key = 'gDyVgzwa0mFz9uUP7M6GQQ=='
str = [appId, groupId, nonceStr, timeStamp].sort().join('') = '1559129713_67297598215591297148AP6DT9ybtniUJfbwx20afc706a711eefc'
signature = hmac_sha256('1559129713_67297598215591297148AP6DT9ybtniUJfbwx20afc706a711eefc', sessionKey) = 'b002b824688dd8593a6079e11d8c5e8734fbcb39a6d5906eb347bfbcad79c617'