有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

使用说明

腾讯会议提供的 JSAPI 有很多是需要进行鉴权才能调用的,需要 wemeet.permission.config 或者 wemeet.permission.agentConfig 先进行鉴权,然后再调用。

鉴权步骤

步骤一:获取第三方应用 auth code(免登码)

调用 permission.authorize,实现第三方应用获取免登授权码,具体调用方法请参见 第三方应用鉴权(OAuth2.0)步骤一中的场景2:在腾讯会议会议客户端和 App 内,可通过 JS-API,在当前页面唤起用户授权弹框,获取 auth_code。

步骤二:通过 auth_code(免登码)换取账号 access_token

通过 auth_code 换取授权 access_token 具体调用方法请参见 第三方应用鉴权(OAuth2.0)步骤二

步骤三:获取 jsapi_ticket

接口描述:
根据 openid,accessToken 获取 jsticket。
jsapi_ticket 是一次性的,不可重复使用。
当前用户获取的 jsapi_ticket,其他用户无法使用。
请求方式:GET
接口请求域名:
https://api.meeting.qq.com/v1/jsapi/ticket

入参

无入参。
但需传 header 参数,header 已包含了 openid,accessToken 等接口调用的必需信息,header 请参见文档 第三方应用鉴权(OAuth 2.0)

出参

参数名称
参数类型
参数描述
ticket
string
jsticket 票据
timestamp
string
时间戳
expired_time
string
过期时间

示例

输出参数:
{
"ticket":"ae37cf52310xxxxxx889ecr4a55",
"timestamp":"1623924237",
"expired_time":"300"
}

步骤四:获取签名参数

在前端进行鉴权之前,需要获取以下签名所需的参数:
参数
字段类型
描述
corp_id
String
企业 ID,企业在会议平台备案的 ID
sdk_id
String
应用 ID,接入方在会议平台备案的应用 ID
timestamp
String
生成签名的时间对应秒级时间戳
nonce_str
String
接入方后台随机生成的字符串
url
String
当前需要初始化 JS_SDK 的页面地址,需在腾讯会议客户端内打开该地址 。地址的 域名 必须是在会议平台备案的 可信域名 。(例如:https://meeting.tencent.com/,注意最后的符号;)(推荐从 header 的 refer 里面去获取,或者通过 location.href 去获取,不要写死)
ticket
String
步骤二中的获取到的 JS_SDK Ticket

步骤五:计算签名

接入方服务端生成 JS_SDK Config 给到自己的前端。
计算签名的示例代码(包含 go、java、python)可参见:前端 JS-API 签名示例代码;如遇问题,可通过 JS-API 签名工具 进行自检。
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&timestamp=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.agentConfig 中所有的参数必须直接来自服务端,不能直接在前端定义。
调用 permission.agentConfig,实现第三方应用 JSAPI 鉴权。
支持的版本:2.17.0
是否需要鉴权:

参数说明

授权请求入参: param:AuthConfigParam
参数名称
参数类型
参数描述
sdkId
String
应用 ID
corpId
String
企业 ID
signature
String
签名
nonceStr
String
生成签名的随机串
timestamp
String
生成签名的时间戳
返回 Promise<void>。

代码示例

wemeet.permission.agentConfig({
sdkId: SDKID,
corpId: CROPID,
signature: SIGNATURE,
nonceStr: NONCE_STR,
timestamp: TIMESTAMP,
})
.then(() => {
})
// success
.catch((err) => {
// failed
});


步骤八:调用 JSAPI

步骤七鉴权通过以后就可以调用 JSAPI 了。