我正在尝试使用以下 PHP 代码对 Coinbase 进行身份验证,但我不断收到无效签名错误消息。
鉴于 info() 是一个函数(最终会将其变成一个对象),它获取 API_KEY、API_SECRET、USERAGENT 和 Coinbase 基本 URL(每个都经过测试),并且 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;
}
?>