最近在弄腾讯云COS图片存储的时候,由于不想使用官方提供的SDK,打算通过http方式调取接口而不走官方SDK,博主也通过看官方文档以及自己研究,把自己最终对实现代码分享给大家。
主要难点是如何生成请求签名,以下是生成签名部分:
/**
* 请求获取签名
* @param $method
* @param $path
* @param $bucketURL
* @param $secretKey
* @param $secretId
* @return string
*/
static function RequestSign($method, $path, $bucketURL, $secretKey, $secretId)
{
$signTime = (string)(time() - 60) . ';' . (string)(time() + 1200);
$host = parse_url($bucketURL);
$httpString = sprintf("%s\n%s\n\nhost=%s\n", strtolower($method), $path, $host['host']);
$stringToSign = sprintf("sha1\n%s\n%s\n", $signTime, sha1($httpString));
$signKey = hash_hmac('sha1', $signTime, $secretKey);
$signature = hash_hmac('sha1', $stringToSign, $signKey);
return sprintf('q-sign-algorithm=sha1&q-ak=%s&q