先贴下我的代码:
$bucket = 'mybucket';
$key = '123.mp3';
$base64_result = base64_encode($bucket.':'.$key.'.ogg');
$fop = "avthumb/ogg|saveas/".$base64_result;
$notify_url = "http://www.mywebsite.net/";
$query = "bucket=".$bucket."&key=".$key."&fops=".$fop."¬ifyURL=".$notify_url;
$access_token = $this->qiniu->fop_access_token($query);
$header = array();
$header[] = 'Host:api.qiniu.com';
$header[] = 'Content-Type:application/x-www-form-urlencoded';
$header[] = 'Authorization:'.$access_token;
$query = "bucket=".urlencode($bucket)."&key=".urlencode($key).
"&fops=".urlencode($fop)."¬ifyURL=".urlencode($notify_url);
$result = curl_post($query, 'http://api.qiniu.com/pfop/', $header);
echo $result;
qiniu.php中的相关函数
function fop_access_token($query)
{
Qiniu_SetKeys(ACCESS_KEY, SECRET_KEY);
$mac = new Qiniu_Mac(ACCESS_KEY, SECRET_KEY);
$sign_data = "/pfop/\n".$query;
$access_token = $mac->Sign($sign_data);
return $access_token;
}
curl模拟post方法
function curl_post($post, $url, $header)
{
$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => false,
CURLOPT_HTTPHEADER => $header,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $post,
);
$ch = curl_init($url);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
请求返回为{"error":"bad token"},请问下哪里有错啊?
你看一下你的Sign函数是不是和上面差不多,要是还是不行,你试一下curl_post里直接把pfop从postfields当中剥离开来,直接放到url里。
另外,你可以通过下面这个链接检测一下你生成的token是不是正确的。
http://jsfiddle.net/gh/get/extjs/4.2/icattlecoder/jsfiddle/tree/master/uptoken