【问题标题】:invalid signature when attempting a sell尝试卖出时签名无效
【发布时间】:2025-11-30 18:30:02
【问题描述】:

我正在尝试通过 API 从特定钱包中出售我的比特币。

我的 GET 调用工作正常,但 POST 调用显示“签名无效”

$API_KEY        = '*****';
$API_SECRET = '*****';

$data['amount'] = 10;
$data['currency']   = 'USD';
$data['quote']      = true;

$api_url    = '/v2/accounts/593b0285-****-****-****-f0ddcb6c9ccc/sells';
$timestamp  = time();
$signature  = hash_hmac('SHA256',$timestamp.'POST'.$api_url.json_encode($data),$API_SECRET;
$version    = '2017-11-11';
$headers    = array('CB-ACCESS-SIGN: '.$signature,
                   'CB-ACCESS-TIMESTAMP: '.$timestamp,
                   'CB-ACCESS-KEY: '.$API_KEY,
                   'CB-VERSION: '.$version);

$ch     = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'https://api.coinbase.com'.$api_url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
$data   = curl_exec($ch);

这是我从 Coinbase 得到的结果

stdClass Object
(
    [errors] => Array
        (
            [0] => stdClass Object
                (
                    [id] => authentication_error
                    [message] => invalid signature
                )
        )
)

我已将货币更改为 BTC 以进行尝试。 $api_url 中的帐户 ID 是我执行帐户 API 调用时的帐户 ID。

[id] => 593b0285-****-****-****-f0ddcb6c9ccc
[name] => BTC Wallet
[primary] => 1
[type] => wallet

【问题讨论】:

  • 您的错误信息还有更多内容吗?
  • 不,没有发送标头,只是 Coinbase 发送的那个错误。

标签: coinbase-api


【解决方案1】:

我想通了,我的标题中缺少 Content-Type

$headers    = array('CB-ACCESS-SIGN: '.$signature,
                    'CB-ACCESS-TIMESTAMP: '.$timestamp,
                    'CB-ACCESS-KEY: '.$API_KEY,
                    'CB-VERSION: '.$version,
                    "Content-Type: application/json");

现在一切正常

【讨论】:

    最近更新 更多