概述
直播服务会对每个访问的请求进行加密签名的生成,用户可通过以下的签名校验规则验证数据来源的合法性,secret_key为用户开通增值服务API之后控制台中API栏目的secret key选项。
签名步骤
每个回调都会包含以下公共参数:
参数名 | 类型 | 必选 | 说明 |
---|---|---|---|
signed_at | string | 是 | unix时间戳 |
signature | string | 是 | 见下面的生成规则 |
参数signature的生成规则如下:
将接口中要求传递的所有参数(不包含signature,但包含signed_at):
编号 | sign生成规则 |
---|---|
1 | 按参数名升序排列 |
2 | 然后按参数名1+参数值+参数名2+参数值拼接 |
3 | 在首尾各加上secret_key |
4 | 计算md5作为signature |
签名示例
/****
* 本示例代码是课堂列表接口的sign计算。
* 其他接口所签参数依据该接口专有参数确定。
*/
$secret_key = "secret_key";
$params = [
"class_id" => "edu_a9410317",
"type"=>"stop",
"custom_id"=>7572,
"signed_at" => "1531295569",
//这个参数是本接口专有参数,其他接口使用该接口的参数。
];
// 按参数名升序排列
ksort($params);
// 将键值组合
array_walk($params,function(&$value,$key){
$value = $key . $value;
});
// 拼接,在首尾各加上$secret_key,计算MD5值
$sign = md5($secret_key . implode('',$params) . $secret_key);
// 结果形如
// $sign=md5("secret_keyclass_idedu_a9410317custom_id7572signed_at1531295569typestopsecret_key");
// 计算结果
// $sign = '703ab3dbfaa99079fd70e59ceaaab33c';