首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我要提交转码任务,为什么一直就提示身份验证失败?

我要提交转码任务,为什么一直就提示身份验证失败?

提问于 2019-05-08 17:10:23
回答 0关注 0查看 169

我按照文档的方法进行的签名,但是就是一直提示身份验证错误。这个错误在什么地方呀? 这个是视频 云点播的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);
?>

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档