开始更新时间:2021-06-17 19:32:22
引入微吼直播SAAS jssdk
<script src="//cnstatic01.e.vhall.com/jssdk/dist/3.1.3/VhallSDK.js"></script>
仅支持https 协议
初始化 微吼SDK
var vhallSDK = new VhallSDK({
app_key: '123123asdasdcas34dfsJsadXV', // APP Key
signedat: getQueryString('signedat'), // 用户签名时间
sign: '123123asdasdcas34dfsJsadXV', // 服务器签名
roomid: 房间id, // 直播,回放,点播等房间ID
account: 12312, // 用户参会id
email: getQueryString('email'), // 可选 - 用户邮箱
username: vhall, // 用户昵称
videoContent: '#video', // 播放器dom 节点ID
docContent: '#docWrap', // 文档展示dom 节点id
questionarieContainer: '#questionWrap', // 问卷dom 容器ID
plugins: [ 'chat', 'doc', 'player', 'interactTools'], // SDk 功能列表 ,必须全选
x5_video_fullscreen: true, // 非必填,启用腾讯H5全屏方式 true开启 false关闭 ,默认false
x5_video_type: true // //非必填,启用腾讯H5同层播放器 true开启 false关闭 ,默认false
password: '', // 第三方k值或观看限制密码
record_id: '12345678', // 设置回放id
sign_type: 0 // 验签规则 必填
})
SDK 初始化参数说明
参数 |
类型 |
说明 |
是否必填 |
备注 |
app_key |
String |
微吼直播开放平台应用key |
是 |
点击获取AppKey |
signedat |
String |
微吼直播JSSDK签名时间戳 |
是 |
|
sign |
String |
微吼直播JSSDK签名时间戳 |
是 |
签名生成算法见下方 |
roomid |
Number、String |
微吼直播活动ID |
是 |
|
account |
Number |
用户ID |
是 |
|
email |
String |
用户Email |
否 |
|
username |
String |
用户昵称 |
是 |
|
videoContent |
String |
播放器Dom id |
是 |
例如: #video-content |
docContent |
String |
文档区域Dom id |
是 |
例如: #doc-area |
questionarieContainer |
String |
问卷容器Dom id |
是 |
如: #question-id |
plugins |
Array |
微吼直播功能列表 |
否 |
如: [ 'chat', 'player', 'doc','interactTools'] |
x5_video_fullscreen |
Boolean |
启用腾讯H5全屏方式 |
否 |
默认:false。 true开启 ,false关闭 |
x5_video_type |
Boolean |
启用腾讯H5同层播放器 |
否 |
默认:false。 true开启 ,false关闭 |
password |
String |
第三方k值或观看限制密码(新增) |
否 |
|
record_id |
String |
设置回放id(新增) |
否 |
优先级最高,设置record_id后即使房间在直播状态,也会优先播放record_id对应的回放 |
sign_type |
Number |
验签规则切换(新增) |
是 |
默认:0。 0: MD5 1:RSA |
SDK签名(sign)说明
Sign 是微吼直播JSSDK,所有功能必须参数。 作为用户使用微吼直播SDK的唯一合法凭证。3.1版本开始支持两种验签规则分别为MD5和RSA两种方式。对应初始化JSSDK时,需要根据不同规则赋值sign_type 来驱动JSSDK使用
签名方式一 (MD5签名方式)
参与签名参数
字段名称 |
字段说明 |
备注 |
roomid |
微吼直播 活动ID |
|
account |
用户账号 |
|
username |
用户昵称 |
|
app_key |
微吼直播 开放平台用户应用Key |
点击获取AppKey |
secret_key |
微吼直播 开放平台用户应用secret_key |
点击获取AppKey |
signedat |
签名调用时的当前时间戳(精确到秒) |
示例代码: |
签名算法规则
规则序号 |
规则 |
备注 |
1 |
按参数名升序排列 |
|
2 |
将参与签名的参数 以 Key + Value 形式顺序拼接 |
|
3 |
在参数拼接完成后的字符串首尾各加上secret_key |
|
4 |
将第三步的得到的字符串进行 md5 加密得到Sign |
|
签名生成示例代码 PHP
<?php
$secret_key = "f145b675f441cc00dd3e55746a0f4780";
$params = [
"roomid"=> "123456789",
"account"=> "12345",
"username"=> "zhangsan",
"app_key"=> "3eb72619af748d73f7fda1e6b0c692a9",
"signedat"=> "1484620708"
];
// 按参数名升序排列
ksort($params);
// 将键值组合
array_walk($params,function(&$value,$key){
$value = $key . $value;
});
// 拼接,在首尾各加上$secret_key,计算MD5值
$sign = md5($secret_key . implode('',$params) . $secret_key);
// 结果形如
$sign=md5("f145b675f441cc00dd3e55746a0f4780account12345app_key3eb72619af748d73f7fda1e6b0c692a9emailzhangsan@vhall.comroomid123456789signedat1484620708usernamezhangsanf145b675f441cc00dd3e55746a0f4780");
// 计算结果
// $sign = '92eec52c58b9bddc0ba663c75a3c1f7f';
签名生成示例代码 Java
String secret_key = "f145b675f441cc00dd3e55746a0f4780";
String roomid = "123456789";
String account = "12345";
String username = "zhangsan";
String app_key = "3eb72619af748d73f7fda1e6b0c692a9";
String signedat = "1484620708";
String email = "zhangsan@vhall.com";
Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("roomid",roomid);
paramMap.put("account",account);
paramMap.put("username",username);
paramMap.put("app_key",app_key);
paramMap.put("signedat",signedat);
paramMap.put("email",email);
String[] keyArray = paramMap.keySet().toArray(new String[0]);
Arrays.sort(keyArray);
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(secret_key);
for (String key : keyArray) {
stringBuilder.append(key).append(paramMap.get(key));
}
stringBuilder.append(secret_key);
String signSource = stringBuilder.toString();
MessageDigest md = MessageDigest.getInstance("MD5");//获取MD5实例
md.update(signSource.getBytes());//此处传入要加密的byte类型值
byte[] result = md.digest();//此处得到的是md5加密后的byte类型值
StringBuilder sb = new StringBuilder(32);
int i;
for (int offset = 0; offset < result.length; offset++) {//做相应的转化(十六进制)
i = result[offset];
if (i < 0) i += 256;
if (i < 16) sb.append("0");
sb.append(Integer.toHexString(i));
}
String str_md5 = sb.toString();
System.out.println(str_md5);
安全说明
MD5(Message Digest Algorithm )为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)。该算法为单向不可逆算法。
为增加签名安全系数, 微吼直播参与签名字符串长度为130+,并为sign 设置了1小时时间时效,靠碰撞检测得出相同sign 的难度为130+的阶乘(极其耗费算力)。请各位开放平台用户放心使用。
签名方式二 (RSA签名方式)
参与签名参数
字段名称 |
字段说明 |
备注 |
roomid |
微吼直播 活动ID |
|
account |
用户账号 |
|
username |
用户昵称 |
|
app_key |
微吼直播 开放平台用户应用Key |
点击获取AppKey |
secret_key |
微吼直播 开放平台用户应用secret_key |
点击获取AppKey |
signedat |
签名调用时的当前时间戳(精确到秒) |
示例代码: |
签名算法规则
规则序号 |
规则 |
备注 |
1 |
按参数名升序排列 |
|
2 |
将参与签名的参数 以 Key + Value 形式顺序拼接 |
|
3 |
将第二步的得到的字符串进行 md5 加密计算 |
|
4 |
用私钥将第三步的md5结果,进行RSA签名计算 |
|
5 |
将第四步中的结果,进行base64url_encode编码,结果作为sign值 |
|
签名生成示例代码 PHP
依赖php的comoser扩展("phpseclib/phpseclib": "2.0")
require './vendor/autoload.php';
use phpseclib\Crypt\RSA;
/**
* base64url_encode
* @param $data
* @return string
*/
function base64url_encode($data) {
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
/**
* base64url_decode
* @param $data
* @return bool|string
*/
function base64url_decode($data) {
return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT));
}
//应用信息
$app_key = 'user_app_key';
$rsa_private_key = '';
//参与签名数据
$params = [
// === 公共参数 ===
"app_key" => $app_key,
"sign_type" => 1, //签名类型:0-MD5 1-RSA
"signed_at" => time(),
// === 业务接口参数 ===
"webinar_id" => "123456",
];
// 按参数名升序排列
ksort($params);
// 将键值组合
array_walk($params, function (&$value, $key) {
$value = $key . $value;
});
//加密
$rsa = new RSA();
$rsa->loadKey($rsa_private_key);
$rsa->setSignatureMode(RSA::ENCRYPTION_PKCS1);
$rsa->setHash('md5');
$signString = md5(implode('', $params));
$sign = base64url_encode($rsa->sign($signString));
浏览器兼容性
浏览器 |
版本 |
备注 |
|
Chrome |
74版本及以上 |
|
|
safari |
12版本及以上 |
|
|
FireFox |
79版本及以上 |
|
|
edge |
84 版本及以上 |
|
|
IE |
10 版本及以上 |
需在项目中首先引入//cnstatic01.e.vhall.com/vhall-new-saas/static/polyfill.js?v=20201111 兼容IE10及以上版本 |
|
360 急速浏览器 |
全版本 |
|
|
手Q 内部浏览器 |
全版本 |
|
|
微信内置浏览器 |
全版本 |
|
|
微信小程序 |
不支持 |
微信小程序由于域名校验严格,推荐使用标品H5页面嵌入开发 |
|
其他手机浏览器 |
绝大部分支持 |
如遇问题请联系商务或邮件我们 |
|
其他未涉及浏览器可能出现兼容性问题。 问题反馈联系客服