多人音视频对话 用的是这两个接口wx.joinVoIPChat 和组件 voip-room。
1、在调用过程中一直提示这个错误
joinVoIPChat:fail: -10088, -10, join room failed. errType: 4, errCode: -12020, errMsg: invalid signature, -1
2、这个接口是免费试用的吗
服务端签名(php)
$data[] = "自己的appid";
$data[] = 'grop_ooo00_tests';//测试房间 这个groupId 需要生成唯一的 使用这个id 签名的人员进入都会进入一个实时语音房间
$data[] = getNonceStr();
$data[] = time();
sort($data,5); //
$st = implode('',$data); //拼接成一个字符串
$hash = hash_hmac('sha256', $st,$session_key); //通过 sha256
接口权限已经开通了
function curl_get_https($url)
{
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在
$tmpInfo = curl_exec($curl); //返回api的json对象
//关闭URL请求
curl_close($curl);
return $tmpInfo; //返回json对象
}
$appid = "wxxxxxx";
$appsecret = "c32526c8af5be2eeaxxxsxxxxxx";
$code = input('code', '');
$getInfoUrl = "https://api.weixin.qq.com/sns/jscode2session?appid={$appid}&secret={$appsecret}&js_code={$code}&grant_type=authorization_code";
$info = curl_get_https($getInfoUrl);
$info = json_decode($info,true);
if(!$info['session_key'])
$this->ajax(202,'session_key errors');
$groupId = 'grop_ooo00_tests';
$nonceStr = 'fdjkhdkhghwei7887438==';
$timeStamp = time();
$data = [
'appid' => $appid,
'groupId' => $groupId,
'nonceStr' => $nonceStr,
'timeStamp' => $timeStamp
];
sort($data,5); //这里是个坑 php sort 的默认参数不会把数字进行字典排序 相关参数请自行查看php文档
$st = implode('',$data); //拼接成一个字符串
$signature = hash_hmac('sha256', $st,$info['session_key']); //通过 sha256 加密
我也这个问题,最终是检查sor按照键名排序了,应该按照键值排序。
请问你是怎么解决签名的问题呢?
接口在小程序后台开通后就可以用了
https://developers.weixin.qq.com/minigame/dev/guide/open-ability/voip-chat.html#%E7%94%B3%E8%AF%B7%E5%BC%80%E9%80%9A
如果一样, 检查一下这几个参数
appId 小游戏的 appId
groupId 游戏房间的唯一标识,由游戏自己保证唯一
nonceStr 随机字符串,长度应小于 128
timeStamp 生成这个随机字符串的 UNIX 时间戳(精确到秒)