我按照文档的方法进行的签名,但是就是一直提示身份验证错误。这个错误在什么地方呀? 这个是视频 云点播的API调用,在文件上传完成后,发起的视频转码。 我按照文档说的,填写了参数,对参数进行了排序,然后签名,但是提交一直不成功。
<?php
//header('Content-type:text/json');
$fileId = $_REQUEST['fileId'];
echo $fileId;
echo '<br>';
// 确定 App 的云 API 密钥
$secret_id = "AKIDwgAU2Jq1UcV8Ucs65sKVP2OTO2ThQJD1";
$secret_key = "xuc7YmTuoY6RcXBcquMax6yZu2OWN5tQ";
// 确定签名的当前时间和失效时间
$current = time();
$expired = $current + 86400; // 签名有效期:1天
$num = rand(10000000, 100000000);
// 向参数列表填入参数
$arg_list = array(
"secretId" => $secret_id,
"currentTimeStamp" => $current,
"expireTime" => $expired,
"random" => rand());
// 计算签名
$orignal = http_build_query($arg_list);
$signature = base64_encode(hash_hmac('SHA1', $orignal, $secret_key, true).$orignal);
$uri = "https://vod.api.qcloud.com/v2/index.php";
// 參数数组
$natvie = array (
'Action' => 'ConvertVodFile',
'fileId' => $fileId,
'isScreenshot' => '0',
'isWatermark' => '0',
'Region' => 'bj',
'Timestamp' => $current,
'Nonce' => $num,
'SecretId'=>$secret_id
);
ksort($natvie);
$srcStr = 'POSTvod.api.qcloud.com/?';
foreach ($natvie as $key => $val) {
$srcStr = $srcStr . $key . "=" . $val . "&";
};
$srcStr1 = '';
if(substr($srcStr,-1) == '&'){
$srcStr1 = substr($srcStr,0,-1);
}else{
$srcStr1 = $srcStr;
}
echo $srcStr;
echo '<br>';
echo $srcStr1;
echo '<br>';
$signStr = base64_encode(hash_hmac('SHA1', $srcStr1, $secret_key, true));
echo $signStr;
echo '<br>';
$data = array (
'Action' => 'ConvertVodFile',
'fileId' => $fileId,
'isScreenshot' => '0',
'isWatermark' => '0',
'Region' => 'bj',
'Timestamp' => $current,
'Nonce' => $num,
'SecretId'=>$secret_id,
'Signature'=> $signStr
);
$ch = curl_init ();
//print_r($ch);
curl_setopt ( $ch, CURLOPT_URL, $uri );
curl_setopt ( $ch, CURLOPT_POST, 1 );
curl_setopt ( $ch, CURLOPT_HEADER, 0 );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );
$return = curl_exec ( $ch );
curl_close ( $ch );
die($return);
?>
相似问题