Coinbase API - 无效签名

时间:2021-01-12 05:49:22

标签: coinbase-api coinbase-php

我正在尝试使用 Coinbase 的 API,但我得到无效的签名。 所以可能我实际上签名错了,或者我遗漏了一些东西。请帮帮我。

    $API_KEY = "-------";
    $API_SECRET = "------";   
    $USER_ID = "------",
    $timestamp = time();
    $method = "POST";
    $path = '/v2/accounts/'.$USER_ID.'/addresses';
    $message = $timestamp . $method . $path ;
    $signature = hash_hmac('SHA256', $message, $API_SECRET);
    $version = '2017-11-11';

    $headers = array(
        'CB-ACCESS-SIGN: ' . $signature,
        'CB-ACCESS-TIMESTAMP: ' . $timestamp,
        'CB-ACCESS-KEY: ' . $API_KEY,
        'CB-VERSION: ' . $version
    ); 
    $body = array(
        'name: New receive address'
    ); 

    $api_url = "https://api.coinbase.com/v2/accounts/'.$USER_ID.'/addresses";

    $curl = curl_init($api_url);
    curl_setopt($curl,CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl,CURLOPT_POSTFIELDS, $body);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    $resp = curl_exec($curl);
    if(!curl_exec($curl)){
        die('Error: "' . curl_error($curl) . '" - Code: ' . curl_errno($curl));
    }
    curl_close($curl);

结果 API:

{"errors":[{"id":"authentication_error","message":"invalid signature"}]}

1 个答案:

答案 0 :(得分:1)

我目前正在研究这个并且刚刚做到了这一点(在 Elixir 中)。我认为有两个问题:

  • 确保您的签名是小写的。文档没有提到这一点。
  • 您正在发出 POST 请求,并且需要将 body 参数作为字符串连接到 prehash(在此上下文中为 $message)以生成签名。在继续执行此恕我直言之前,您应该在电子钱包端点上通过简单的 GET 请求尝试此操作。
相关问题