我正在尝试连接到Huobi API,但问题是身份验证始终失败。
<?php
date_default_timezone_set("Etc/GMT+0");
$api_key="xxxxxxxxxxxxxxxxxxxxxxxxx";
$api_secret="yyyyyyyyyyyyyyyyyyyyyyyyyyy";
$timestamp = date('Y-m-d\TH:i:s', time());
function url_encode($string){
return urlencode(utf8_encode($string));
}
function http_request($method = 'GET', $url, $headers, $data = null)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, TRUE);
if ($method == 'POST') {
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
if ($method == 'DELETE') {
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'DELETE');
}
if(!empty($headers)) {
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
$pre_sig = "GET\n
api.huobi.pro\n
/v1/account/accounts\n
AccessKeyId=$api_key&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=".url_encode($timestamp);
$signature = base64_encode(hash_hmac("sha256", $pre_sig, $api_secret, TRUE));
$url = "https://api.huobi.pro/v1/account/accounts?AccessKeyId=$api_key&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=".url_encode($timestamp)."&Signature=$signature";
$headers[0] = "Content-Type:application/json";
$response = http_request('GET', $url, $headers, $body);
var_dump($response);
返回错误:
“ api签名无效”。
知道我在做什么错吗? Huobi API身份验证文档为here。谢谢!