概述

视频直播服务会对每个访问的请求进行身份验证,所以无论使用 HTTP 还是 HTTPS 协议提交请求,都需要在请求中包含签名(sign)信息。

签名步骤

如果auth_type为2时,视频直播通过使用appkey和secretkey进行对称加密的方法来验证请求的发送者身份,每个接口必须填写以下公共参数:

参数名 类型 必选 说明
auth_type int 授权类型,1为验证帐号和密码(目前只通过帐号和密码验证),2为appkey/secretkey验证方式
app_key string auth_type为2时为必填项, 点击获取app_key/secrect_key, 使用说明见“5、签名方式调用”
signed_at string auth_type为2时为必填项, unix时间戳
sign string auth_type为2时为必填项,见下面的生成规则

接口中必须包含公共请求参数,接口页面中只描述所需不同的请求参数!

参数sign的生成规则如下:

将接口中要求传递的所有参数(不包含sign,但包含auth_type、app_key、signed_at):

编号 sign生成规则
1 按参数名升序排列
2 然后按参数名1+参数值+参数名2+参数值拼接
3 在首尾各加上secret_key
4 计算md5作为sign

以接口"webinar_start_获取发起直播页面url"为例:点击查看接口说明 公共参数包括:auth_type、app_key、signed_at \ 专有参数包括:webinar_id \ 所以,在调用该接口时,应将上述所有参数一起签到sign中。\ 对于其他接口,公共参数部分不变,要将该接口的专有参数全部签入sign。

签名示例

/****
 * 本示例代码是webinar_start_url接口的sign计算。
 * 其他接口所签参数依据该接口专有参数确定。
 */
$secret_key = "user_secret_key";

$params = [
	"app_key" => "user_app_key",
	"auth_type"=> 2,
	"signed_at" => "timestamp_now",
	"webinar_id" => "123456789",
	//这个参数是本接口专有参数,其他接口使用该接口的参数。
	//如需传非必填或其他必填参数,也需加在里面
];

// 按参数名升序排列
ksort($params);

// 将键值组合
array_walk($params,function(&$value,$key){
	$value = $key . $value;
});

// 拼接,在首尾各加上$secret_key,计算MD5值
$sign = md5($secret_key . implode('',$params) . $secret_key);

// 结果形如
// $sign=md5("user_secret_keyapp_keyuser_app_keyauth_type2signed_attimestamp_nowwebinar_id123456789user_secret_key");

// 计算结果
// $sign = '4de932c67d65f26c6537ffb3a75401c3';