鉴权方式
更新时间: 2024/04/02 17:59:25公共参数
参数名称 | 类型 | 是否必传 | 说明 |
---|---|---|---|
X-CR-SecretId | String | 是 | 每个企业的唯一标识 secretId |
X-CR-Timestamp | Long | 是 | 当前请求的时间戳,单位为秒 如果与服务器时间相差超过5分钟,会引起签名过期错误。 |
X-CR-Signature | String | 是 | 签名。加密算法: SHA256,值为 sha256( secretId + '&' + Timestamp + '&' + secretKey) |
X-CR-RequestId | String | 是 | 每次请求API的ID,可用UUID |
说明:
- 以上参数统一放到 HTTP Header 请求头部中
- secretId 用于唯一标识,指明是哪个企业;secretKey 密钥,用于生成签名。
- 每次请求都要生成一次签名
使用示例
从会议管理后台获取到如下内容:
选项 | 值 |
---|---|
secretId | 6mioUaDlFdf3Bagt3s |
secretKey | t02npiEZn82WqRl26Nfb0stD89bZkwTT |
程序生成当前时间戳 timestamp = 1622098479,
计算签名 signature = sha256( secretId + '&' + Timestamp + '&' + secretKey)
= edda74671f313bc7c081bf6e11c8da9ebe73224e4aadba96f6ae2c6ba4550f25。
生成签名的代码示例如下:
package com.cloudroom.api.core;
import com.google.common.hash.Hashing;
import java.nio.charset.StandardCharsets;
import java.util.Calendar;
public class SignTest {
public static void main(String[] args) {
String secretId = "6mioUaDlFdf3Bagt3s";
String secretKey = "t02npiEZn82WqRl26Nfb0stD89bZkwTT";
long timestamp = Calendar.getInstance().getTimeInMillis() / 1000;
System.out.println(timestamp);
String signature = Hashing.sha256()
.hashString(secretId + '&' + timestamp + '&' + secretKey, StandardCharsets.UTF_8)
.toString();
System.out.println(signature);
}
}
调用创建会议接口,在HTTP Header 请求头部中填入鉴权信息,如图所示:
在body中填入业务参数,如下图所示:
调用成功后,会获取到刚创建的会议号,用于后续业务处理。
常见问题
签名过期
如果接口返回如图结果
说明HTTP Header 请求头部参数 X-CR-Timestamp 的值与服务器时间相差超过5分钟。
需要重新获取当前时间戳,重新生成签名。
修改参数 X-CR-Timestamp 和 X-CR-Signature 的值。
签名无效
如果接口返回如图结果
说明HTTP Header 请求头部参数 X-CR-Signature 的值不对
请按照上文的签名生成规则,生成正确的值。
其他鉴权的错误信息,请参考鉴权错误码