腾讯会议开发者工具_办公协同解决方案

DEMO

请参见 JS-SDK Demo 进行调用。

前端 JS-API 签名工具

协助开发者对 JS-API 使用前通过 Config 接口注入权限验证配置的签名校验。单击下方按钮即可前往腾讯会议前端 JS-API 签名工具:

前端 JS-API 签名示例代码

提供了三种代码示例给开发者参考。

Go 代码示例

/** * 生成签名 * * @param corpId 企业ID * @param sdkId 应用ID * @param timestamp 生成签名的时间对应秒级时间戳 * @param nonceStr 接入方后台随机生成的字符串 * @param sourceUrl 需要初始化JS_SDK的当前页面地址(不要转码) * @param ticket 接入方后台请求会议后台获取的JS_SDK Ticket * @return sign签名,配置参数签名 */func DoSignature(corpId string, sdkId string, timestamp string, nonceStr string, sourceUrl string, ticket string) string {   url := DoPreUrl(sourceUrl)   fmt.Println(url)   plainText := fmt.Sprintf("corp_id=%s&sdk_id=%s&timestamp=%s&nonce_str=%s&url=%s&ticket=%s",      corpId, sdkId, timestamp, nonceStr, url, ticket)   fmt.Println(plainText)   sign := fmt.Sprintf("%x", sha256.Sum256([]byte(plainText)))   fmt.Println(sign)   return sign}
/** * 预处理url * 1、url字段包含协议头、域名、路径、Query参数,不包含位置参数。如:https://www.baidu.com/search?a=1&b=2 * 2、若当前url最后带有#号,例如https://www.baidu.com/search/#/ * 由于#号是代表一个锚点,计算签名的时候,腾讯会议侧会忽略#号和#号后面的,故接入方也需要用代码处理,忽略掉#号和#号后面的,最终url应该为https://www.baidu.com/search/ * * @param sourceUrl 需要初始化JS_SDK的当前页面地址(不要转码) * @return url 预处理之后的url */func DoPreUrl(sourceUrl string) string { rawUrl, _ := url.Parse(sourceUrl) var url string if len(rawUrl.RawQuery) > 0 { url = fmt.Sprintf("%v://%v%v?%v", rawUrl.Scheme, rawUrl.Host, rawUrl.Path, rawUrl.RawQuery) } else { url = fmt.Sprintf("%v://%v%v", rawUrl.Scheme, rawUrl.Host, rawUrl.Path) } return url}

Java 代码示例

/** * 生成签名 * * @param corpId 企业ID * @param sdkId 应用ID * @param timestamp 生成签名的时间对应秒级时间戳 * @param nonceStr 接入方后台随机生成的字符串 * @param sourceUrl 需要初始化JS_SDK的当前页面地址(不要转码) * @param ticket 接入方后台请求会议后台获取的JS_SDK Ticket * @return sign签名,配置参数签名 */public static String DoSignature(String corpId ,String sdkId ,String timestamp,String nonceStr,String sourceUrl,String ticket ) {    String url = DoPreUrl(sourceUrl);    String plainText = String.format("corp_id=%s&sdk_id=%s&timestamp=%s&nonce_str=%s&url=%s&ticket=%s",            corpId, sdkId, timestamp, nonceStr, url, ticket);    MessageDigest messageDigest;    String sign = "";    try {        messageDigest = MessageDigest.getInstance("SHA-256");        messageDigest.update(plainText.getBytes("UTF-8"));        sign = bytesToHex(messageDigest.digest());    } catch (NoSuchAlgorithmException e) {        e.printStackTrace();    } catch (UnsupportedEncodingException e) {        e.printStackTrace();    }    return sign;}
/** * 预处理url * 1、url字段包含协议头、域名、路径、Query参数,不包含位置参数。如:https://www.baidu.com/search?a=1&b=2 * 2、若当前url最后带有#号,例如https://www.baidu.com/search/#/ * 由于#号是代表一个锚点,计算签名的时候,腾讯会议侧会忽略#号和#号后面的,故接入方也需要用代码处理,忽略掉#号和#号后面的,最终url应该为https://www.baidu.com/search/ * * @param sourceUrl 需要初始化JS_SDK的当前页面地址(不要转码) * @return url 预处理之后的url */public static String DoPreUrl(String sourceUrl) { URL rawUrl = null; try { rawUrl = new URL(sourceUrl); } catch (MalformedURLException e) { e.printStackTrace(); } String url; if (rawUrl.getQuery() != null && rawUrl.getQuery() != "") { url = String.format("%s://%s%s?%s", rawUrl.getProtocol(), rawUrl.getHost(), rawUrl.getPath(), rawUrl.getQuery()); } else { url = String.format("%s://%s%s", rawUrl.getProtocol(), rawUrl.getHost(), rawUrl.getPath()); } return url;}
static char[] HEX_CHAR = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
/** * 转Hex * @param bytes * @return Hex */static String bytesToHex(byte[] bytes) { char[] buf = new char[bytes.length * 2]; int index = 0; for (byte b : bytes) { buf[index++] = HEX_CHAR[b >>> 4 & 0xf]; buf[index++] = HEX_CHAR[b & 0xf]; } return new String(buf);}

Python 代码示例

# 加签def sign(corp_id, sdk_id, timestamp, nonce_str, url, ticket):    tobeSig = "corp_id={0}&sdk_id={1}&timestamp={2}&nonce_str={3}&url={4}&ticket={5}".format(        corp_id, sdk_id,  timestamp,  nonce_str,  preUrl(url),  ticket)    signature = data_sha = hashlib.sha256(tobeSig.encode('utf-8')).hexdigest()       return signature.encode('utf-8')
# url预处理def preUrl(sourceUrl): rawURL = urlparse(sourceUrl) s = '' if len(rawURL.query) > 0: s = "{0}://{1}{2}?{3}".format(rawURL.scheme, rawURL.netloc, rawURL.path, rawURL.query) else: s = "{0}://{1}{2}".format(rawURL.scheme, rawURL.netloc, rawURL.path) print(s) return s



对腾讯办公协同的解决方案有疑惑?想了解解决方案收费? 联系解决方案专家

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠

阿里云解决方案也看看?: 点击对比阿里云的解决方案