coinbase api возвращает {"errors":[{"id":"invalid_token","message":"Маркер доступа недействителен"}]}

Я пытаюсь получить доступ к api coinbase для генерации адреса на моем терминале Ubuntu.

curl -k -X GET  "https://api.coinbase.com/v2/accounts/3e3835d3----/addresses"  -H "CB-VERSION: 2015-04-08"  -H  "accept: application/json;charset=utf-8" -H "Authorization: Bearer abd90df5f27a7b170cd775abf89d632b350b7c1c9d53e08b340cd9832ce52c2c"  

возвращает ошибку ниже.

{"errors": [{"id": "invalid_token", "message": "Маркер доступа недействителен"}]}

Я не знаю, что передать в качестве носителя авторизации. У меня есть только ключ API и секрет API. Если есть другой шаг или другая документация, пожалуйста, сообщите мне. Если вам нужна дополнительная информация, спросите это также.

Пример будет полезен. Заранее спасибо.

2 ответа

Решение

Пожалуйста, попробуйте понять эту документацию для Python. Это говорит

> All REST requests must contain the following headers:
> 
>   CB-ACCESS-KEY API key as a string  
>   CB-ACCESS-SIGN Message signature (see below)  
>   CB-ACCESS-TIMESTAMP Timestamp for your request
> 
> All request bodies should have content type application/json and be
> valid JSON.
> 
> Example request:
> 
>     curl https://api.coinbase.com/v2/user \   
    --header "CB-ACCESS-KEY:<your api key>" \     
    --header "CB-ACCESS-SIGN: <the user generated message signature>" \     
    --header "CB-ACCESS-TIMESTAMP: <a timestamp for your request>"
>
> The CB-ACCESS-SIGN header is generated by creating a sha256 HMAC using
> the secret key on the prehash string timestamp + method + requestPath
> + body (where + represents string concatenation). The timestamp value is the same as the CB-ACCESS-TIMESTAMP header.
> 
> The body is the request body string. It is omitted if there is no
> request body (typically for GET requests).
> 
> The method should be UPPER CASE.
> 
> The requestPath is the full path and query parameters of the URL,
> e.g.: /v2/exchange-rates?currency=USD.
> 
> The CB-ACCESS-TIMESTAMP header MUST be number of seconds since Unix
> Epoch in UTC.
> 
> Your timestamp must be within 30 seconds of the API service time, or
> your request will be considered expired and rejected.

Итак, что я сделал в php, чтобы получить носитель авторизации для отправки в запросе curl:

$sig = hash_hmac('sha256', $requeststring, $coinbaseclientsecret);

Быстро прочитав документ API, вы обнаружите, что вам нужно использовать OAuth для носителя. Смотрите пример документации по интеграции Coinbase.

Другие вопросы по тегам