概述
直播服务会对每个访问的请求进行身份验证,所以无论使用 HTTP 还是 HTTPS 协议提交请求,都需要在请求中包含签名(sign)信息。
签名步骤
每个接口必须填写以下公共参数:
参数名 | 类型 | 必选 | 说明 |
---|---|---|---|
key | string | 是 | 开通API服务后会在操作台显示此参数, 每个用户会获取一个唯一的key值 |
signed_at | string | 是 | unix时间戳 |
sign | string | 是 | 见下面的生成规则 |
接口中必须包含公共请求参数,接口页面中只描述所需不同的请求参数!
参数sign的生成规则如下:
将接口中要求传递的所有参数(不包含sign,但包含key、signed_at):
编号 | sign生成规则 |
---|---|
1 | 按参数名升序排列 |
2 | 然后按参数名1+参数值+参数名2+参数值拼接 |
3 | 在首尾各加上secret_key(开通API服务后在操作台显示此参数) |
4 | 计算md5作为sign |
以接口"课堂列表"为例:点击查看接口说明 公共参数包括:key、signed_at 所以,在调用该接口时,应将上述所有参数一起签到sign中。 对于其他接口,公共参数部分不变,要将该接口的专有参数全部签入sign。
签名示例
/****
* 本示例代码是课堂列表接口的sign计算。
* 其他接口所签参数依据该接口专有参数确定。
*/
$secret_key = "0a6de444981b68d6a049053296491e49";
$params = [
"key" => "key",
"signed_at" => "timestamp_now",
"pos" => 10,
"limit" => 10
//这个参数是本接口专有参数,其他接口使用该接口的参数。
];
// 按参数名升序排列
ksort($params);
// 将键值组合
array_walk($params,function(&$value,$key){
$value = $key . $value;
});
// 拼接,在首尾各加上$secret_key,计算MD5值
$sign = md5($secret_key . implode('',$params) . $secret_key);
// 结果形如
// $sign=md5("0a6de444981b68d6a049053296491e49keykeylimit10pos10signed_attimestamp_now0a6de444981b68d6a049053296491e49");
// 计算结果
// $sign = 'e7e7646c380d8646e9ed970d9e8d0c6f';