使用说明
腾讯会议提供的 JSAPI 有很多是需要进行鉴权才能调用的,需要
wemeet.permission.config
或者 wemeet.permission.agentConfig
先进行鉴权,然后再调用。鉴权步骤
步骤一:通过 auth_code(免登码)获取 userid
接口描述:
通过 auth_code(免登码)换取账号 userid。
切记 access_token 只可以存储在应用后台,不要暴露到前端页面,否则会有安全风险。
调用方法:Get
接口请求域名:
https://api.meeting.qq.com/v1/jsapi/user?auth code={auth code}
header:请参见 企业自建应用鉴权(JWT)。
输出参数
参数名称 | 参数类型 | 参数描述 |
user_info | UserObj | 用户对象 |
data 内数据结构
参数名称 | 参数类型 | 参数描述 |
userid | String | 企业用户唯一标识 |
示例
输入示例
https://api.meeting.qq.com/v1/jsapi/user?auth_code=98187ecd**4846ac555a658do c1122
输出示例
{"code": 0,"message":"SUCCESS","nonce":"98187ecdebca4846","user_info":{"userid":"zhangsan'},}
步骤二:获取 jsapi_ticket
接口描述:
根据 userid 获取 jsticket。
jsapi_ticket 是一次性的,不可重复使用。
当前用户获取的 jsapi_ticket,其他用户无法使用。
调用方式: GET
接口请求域名:
https://api.meeting.qq.com/v1/jsapi/ticket?userid={userid}
header:请参见 企业自建应用鉴权(JWT)。
输入参数
参数名称 | 必选 | 参数类型 | 参数描述 |
userid | 是 | String | 用户 ID。 |
输出参数
参数名称 | 参数类型 | 参数描述 |
ticket | String | jsticket 票据 |
timestamp | String | 时间戳 |
expired_time | String | 过期时间 |
示例
输出参数:
{"ticket":"1e05cf52310xxxxxx447ecr4a55","timestamp":"1623924237","expired_time":"300"}
步骤三:获取签名参数
在前端进行鉴权之前,需要获取以下签名所需的参数(必填):
参数 | 字段类型 | 描述 |
corp_id | String | 企业 ID,企业在会议平台备案的 ID |
sdk_id | String | 应用 ID,接入方在会议平台备案的应用 ID |
timestamp | String | 生成签名的时间对应秒级时间戳 |
nonce_str | String | 接入方后台随机生成的字符串 |
url | String | 当前需要初始化 JS_SDK 的页面地址,需在腾讯会议客户端内打开该地址 。地址的域名必须是在会议平台备案的可信域名 (推荐从 header 的 refer 里面去获取,或者通过 location.href 去获取,不要写死) |
ticket | String | 步骤二中的获取到的 JS_SDK Ticket |
步骤四:计算签名
接入方服务端生成 JS_SDK Config 给到自己的前端。
参数 | 字段类型 | 描述 |
corp_id | String | 企业 ID |
sdk_id | String | 应用 ID |
timestamp | String | 生成签名的时间对应秒级时间戳 |
nonce_str | String | 接入方后台随机生成的字符串 |
sign | String | 配置参数签名 |
上面参数中的 sign 是对多个参数的签名。签名规则如下:
签名对应明文的字段:
字段顺序 | 参数 | 描述 |
1 | corp_id | 企业 ID |
2 | sdk_id | 应用 ID |
3 | timestamp | 生成签名的时间对应秒级时间戳 |
4 | nonce_str | 接入方后台随机生成的字符串 |
5 | url | 需要初始化 JS_SDK 的当前页面地址(不要转码) |
6 | ticket | 接入方后台请求会议后台获取的 JS_SDK Ticket |
签名明文拼接:
以下是样例明文,注意 字段顺序不可更改,字段间使用"&"间隔:
"corp_id=12345&sdk_id=67890×tamp=1622517702&nonce_str=abcde&url=https://www.test.com/search?a=1&b=2&ticket=ABCDEFXX"
注意:
url 字段包含协议头、域名、路径、Query 参数,不包含位置参数。例如:
https://www.test.com/search?a=1&b=2
。若当前 url 最后带有#号,例如:
https://www.test.com/search/#/
。
由于#号是代表一个锚点,计算签名的时候,腾讯会议侧会忽略#号和#号后面的,故接入方也需要用代码处理,忽略掉#号和#号后面的,最终 url 应该为 https://www.test.com/search/
。签名方法:sha256
步骤五:引入使用的JS
步骤六:JSAPI 鉴权
注意:
wemeet.permission.config 中所有的参数必须直接来自服务端,不能直接在前端定义。
参数描述:调用 permission.config,实现企业自建应用 JSAPI 鉴权配置。
支持的版本:2.17.0
是否需要鉴权:否
参数说明
授权请求输入参数:
param:AuthConfigParam
参数名称 | 参数类型 | 参数描述 |
sdkId | String | 应用 ID |
corpId | String | 应用的企业 ID |
signature | String | 签名 |
nonceStr | String | 生成签名的随机串 |
timestamp | String | 生成签名的时间戳 |
返回 Promise<void>。
代码示例
wemeet.permission.config({sdkId: SDKID,corpId: CROPID,signature: SIGNATURE,nonceStr: NONCE_STR,timestamp: TIMESTAMP,}).then(() => {// success}).catch((err) => {// failed});
步骤七:调用 JSAPI
步骤六鉴权通过以后就可以调用 JSAPI 了。