Я следовал этому примеру на Coinbase: https://docs.pro.coinbase.com/#api-key-permissions
Я знаю, что есть некоторые различия между "crypto" и "crypto-js".
Я думаю, это должно выглядеть примерно так:
const method = 'POST';
const timestamp = Date.now() / 1000;
const requestPath = url.replace(baseURL, '');
const body = JSON.stringify({
price: '1.0',
size: '1.0',
side: 'buy',
product_id: 'BTC-USD'
});
const prehash = timestamp + method + requestPath + body;
const keyBase64 = Buffer(secret, 'base64');
const signed = CryptoJS.HmacSHA512(prehash, secret).toString(CryptoJS.enc.Base64);
const headers = {
'CB-ACCESS-KEY': keyBase64,
'CB-ACCESS-SIGN': signed,
'CB-ACCESS-TIMESTAMP': timestamp,
'CB-ACCESS-PASSPHRASE': passphrase
}
Предварительный хеш ('что') в выглядит примерно так ... 1554714678.037POST / orders {"price": "1.0 "," size ":" 1.0 "," side ":" buy "," product_id ":" BTC-USD "}
В примечании на Coinbase говорится, что ключ должен декодироваться в base64, но они используютсекрет в их примере.В нем также говорится, что полезная нагрузка должна быть закодирована в base64 перед добавлением в заголовок.Я думаю, что все сделал правильно, но все еще получаю сообщение об ошибке:
Ошибка: запрос не выполнен с кодом состояния 401
Когда я создал ключ API на Coinbase, у меня есть правильное разрешение,Это обеспечило ключ и секрет после поколения.Там не было никакого упоминания о фазе.Я вижу в документации и в своем примере кода они предоставляют парольную фазу, но для чего она и где она должна быть определена в Coinbase.Может быть, в этом проблема.
Я добавил это в codesandbox.io, чтобы было легче понять, о чем я говорю ... https://codesandbox.io/s/0q93n9vz20