Я пытаюсь пройти аутентификацию в Coinbase, используя следующий PHP-код, и все время получаю сообщение об ошибке неверной подписи.
Учитывая, что info() — это функция (в конечном итоге превратит ее в объект), которая получает API_KEY, API_SECRET, USERAGENT и базовый URL-адрес Coinbase (каждый протестирован), а также функция get_coinbase_time(), которая была протестирована для получения времени эпохи из Coinbase, я не испытываю радости. Я предполагаю, что ошибка находится в строке, где определен $sign. В документах не очень ясно, как решить эту проблему. Может ли кто-нибудь оценить мой код и порекомендовать изменения или предложить код, который может работать, на котором я могу учиться.
Спасибо!
<?php
var_dump(get_coinbase_access('/v2/accounts'));
function get_coinbase_access($path){
$data = get_coinbase_time() . 'GET' . $path;
$sign = hash_hmac("sha256", $data, info('secret'));
$headers = array();
$headers[] = 'CB-ACCESS-KEY: ' . info('key');
$headers[] = 'CB-ACCESS-SIGN: ' . $sign;
$headers[] = 'CB-ACCESS-TIMESTAMP: ' . get_coinbase_time();
$headers[] = 'CB-VERSION: 2016-03-08';
$headers[] = 'Content-Type: application/json';
$ch= curl_init(info('url') . $path);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HTTPGET, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, info('useragent'));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$response = curl_exec($ch);
$res = json_decode($response, TRUE);
return $res;
}
?>