UNPKG

@hysc/external

Version:

Boom external js sdk

179 lines (123 loc) 5.27 kB
## 一.企业应用鉴权 ### 1.鉴权前提 - 百家云颁发应用的appId和appSecret - 开发者需在自己的服务端集成Signature生成算法(参考第四节) - SDK初始化时需传入AppID ### 2.第三方客户端AppID鉴权流程图 ![authentication](http://img.baijiayun.com/0ewiki/attachments/24a4db41cdae523c2777beba809f94b9.jpg) ### 3.第三方客户端生成签名 【signature】 - 第三方客户端将userId(第三方userId)发送给第三方服务器。 - 第三方服务器根据appId、userId、appSecret等,生成鉴权用的签名材料signature。 - 第三方服务端返回signature,以及 expireTime 和 nonce 值。 - 第三方客户端调用客户端SDK的Login接口,参数为userId、signature、expireTime和nonce。 - 客户端 SDK 去Boom服务端鉴权。 ### 4.第三方客户端生成签名的算法 ``` Signature = HexEncode(HMAC-SHA256((appId + ":" + userId + ":" + expireTime + ":" + nonce), appSecret)) ``` #### 算法说明: - HMAC-SHA256 的输入数据是 appId、userId、expireTime、nonce 值,中间用“:”分隔。 - HMAC-SHA256 的密钥是 appSecret。 - HMAC-SHA256 生成的二进制数需要转换为十六进制字符串(HexEncode) - expireTime:鉴权签名材料 signature的过期时间戳。单位是秒。比如当前的系统的时间戳是1704060000,signature有效期设置成10分钟,则 expireTime = 1704060000+10*60 = 1704060600 - nonce:随机字符串,每次计算鉴权签名材料 signature时都必须不同。字符串长度为32~64字节 ## 二.Boom JSSDK BoomMeeting 是为了让Boom平台的第三方用户更加高效和快捷的接入Boom音视频能力的抽象出来 SDK 产品,第三方应用仅用有限几步,就可以获取Boom的全部音视频能力。 ### Installation BoomMeeting为UMD打包方式,兼容了AMD common.js 等多种模块技术的引用 以下所有功能,皆可在index.html或者main.js中找到对应示例 * step1: - 服务端获取签名信息 `step4`登录的时候 需要用到 这些参数 { userId, nonce, expireTime, nickname, signature } 参考生成签名算法 * step2: 在自有工程index.html中引入对应的js ``` <script src="https://clientpkg.boom.cn/download/js-lib/BoomMeetingExternal.min.js"></script> ``` 其中 BoomMeeing.js 为Boom平台的api入口文件 main.js为第三方业务处理文件(可根据项目情况自定义class或者js业务处理文件) * step3: - baseURL: 是私有化部署之后服务器接口的地址 - domain: 是私有化部署之后会议室页面的地址 ```javascript BoomMeetingExternal.setup({appId, baseURL, domain}) ``` * step4: 调用登录接口,传入业务端的用户id,用户昵称,nonce, expireTime, signature ```javascript BoomMeetingExternal.login({userId, nonce, expireTime, nickname, signature}).then((data)=>{ showToast('登录成功') }).catch(error=>{ console.log(error) }) ``` * step5: 监听事件 ```javascript BoomMeetingExternal.on('participant-joined', (data) => { console.log('------participant-joined listener-------', data); var tarP = data.detail.participant; showToast('有小伙伴加入房间:' + JSON.stringify(getNickName(tarP))); }); BoomMeetingExternal.on('participant-left', (data) => { console.log('------participant-left listener-------', data); var tarP = data.detail.participant; showToast('有小伙伴离开房间:' + JSON.stringify(getNickName(tarP))); }); BoomMeetingExternal.on('room-error', (data) => { console.log('------room-error listener-------', data); var nickNames = []; var tarError = data.detail.error; console.log('加入房间失败' + JSON.stringify(tarError)); showToast('加入房间失败' + JSON.stringify(tarError)); }); BoomMeetingExternal.on('room-end', (data) => { console.log('------room-end listener-------', data); var nickNames = []; console.log('结束了会议') showToast('结束了会议'); }); ``` * step6: 加入房间(加入之前,需要先去后台创建) ```javascript BoomMeetingExternal.join({roomId: '424830', nickname:'nickname', mode:'live' | 'meeting' | 'audio'}).then((data)=>{ showToast('加入成功') }).catch(error=>{ console.log(error) }) ``` * step7: 离开房间 ```javascript BoomMeetingExternal.leave().then((data)=>{ showToast('离开成功') }).catch(error=>{ console.log(error) }) ``` <!-- ## 三.restApi {@tutorial restAPI} ## 四.点播转码流程图 {@tutorial vod} --> # boom-web-saas-external Boom js SDK ``` npn install ``` ## tsc 生成 types 文件. dist 文件 ``` tsc ``` ## npm run build 生成打包文件 ``` npm run build ``` ## npm run jsdoc:generate 生成开发文档 ``` npm run jsdoc:generate ``` ## 参考: - https://segmentfault.com/a/1190000021695864 - https://www.cnblogs.com/share123/p/10141615.html - https://blog.csdn.net/weixin_48986139/article/details/114269077 ## sample 是示例代码, 跑起来之后会在 localhost:3004 上访问到 ``` cd sample; npm run start ```