签名机制
概述
服务端会对每个访问的请求进行身份验证,所以无论使用 HTTP 还是 HTTPS 协议提交请求,都需要在请求中包含签名(sign)信息。
公共参数
参数名 | 类型 | 必选 | 说明 |
---|---|---|---|
AccessKey | string | 是 | 开通API后会颁发通行证和密钥 |
timeStamp | string | 是 | unix时间戳 |
version | string | 是 | 版本号:20191023 |
sign | string | 是 | 签名 |
签名机制
步骤 | 说明 |
---|---|
1 | 将所有请求的参数(除了Sign)进行字典排序 |
2 | 将排好序的参数按字典排序按&key=value的形式拼接成字符串,其中value需要进行urlencode |
3 | 将步骤2中的字符串,前面拼接请求方法,后面拼接 &密钥串 |
4 | 将步骤3中得到的字符串进行MD5,即可得到sign |
签名示例代码
/****
- 本示例代码是create_course接口的sign计算。
- 其他接口所签参数依据该接口专有参数确定。
*/
$secret_key = "user_secret_key";
$params = [
"AccessKey" => "user_access_key",
"timeStamp"=> 1572329376,
"version" => "20191023",
...//请求参数
];
// 字典排序
ksort($params);
// 将键值组合
foreach($params as $key => $val){
$str .= "&" . $key . "=" . urlencode($val);
}
// 拼接,在首尾各加上$secret_key,计算MD5值
//method 请求方法
$sign = MD5($method . $str . "&" . $secretkey);
// 结果形如
//$sign=md5("POST&AccessKey=user_access_key&.....&version=20191023&user_secret_key");
// 计算结果
// $sign = '4de932c67d65f26c6537ffb3a75401c3';
生成请求URL的方法如下:
function create_url($params,$method){
$secretkey = '123456798';
$url = "http://openapi.360drm.com/Classes/getClassInfo?";
ksort($params);
$str = "";
foreach($params as $key => $val){
$str .= "&" . $key . "=" . urlencode($val);
}
$sign = MD5($method . $str . "&" . $secretkey);
$url .= $str . "&sign=" . $sign;
return $url;
}
文档更新时间: 2019-11-08 10:42 作者:admin