Почему я все еще получаю код ошибки 400 из этого запроса API к Coinbase Pro? - PullRequest
0 голосов
/ 31 мая 2019

Я следовал инструкциям на странице разработчиков Coinbase Pro для аутентификации с помощью API-ключа, и независимо от того, что я пытаюсь, я всегда получаю код ошибки 400 с использованием CryptoJS и React / React Native.

https://docs.pro.coinbase.com/#api-key-permissions

import CryptoJS from 'crypto-js';
import axios from 'axios';
import { Buffer } from 'buffer';

const key = '<removed';
const secret = '<removed>';
const passphrase = '<removed>';
const method = 'GET';
const uri = 'https://api.pro.coinbase.com/accounts';
const requestPath = '/accounts';
const timestamp = Math.floor(Date.now() / 1000);
const message = `${timestamp}${method}${requestPath}`;
const secret64 = Buffer.from(secret, 'base64').toString('ascii');
const hmac = CryptoJS.HmacSHA512(message, secret64);
const signed = CryptoJS.enc.Base64.stringify(hmac).toString();

const headers = {
  'User-Agent': 'reactnative',
  'Content-Type': 'application/json',
  'CB-ACCESS-KEY': key,
  'CB-ACCESS-SIGN': signed,
  'CB-ACCESS-TIMESTAMP': timestamp,
  'CB-ACCESS-PASSPHRASE': passphrase,
  'CB-VERSION': '2019-05-22'
};

axios
  .get(uri, {
    method,
    headers
  })
  .then((response) => {
    console.log(response);
  })
  .catch((error) => {
    console.log(error);
  });



Other variations I have tried:

// const secret64 = Buffer.from(secret, 'base64').toString('ascii');
// const secret64 = Buffer.from(secret, 'base64').toString();
// const secret64 = Buffer.from(secret, 'base64');
// const signed = CryptoJS.HmacSHA512(message, secret64).toString();
// const signed64 = Buffer.from(signed).toString('base64');

// const hmac = CryptoJS.HmacSHA512(message, secret64).toString(CryptoJS.enc.Hex);
// const hmac = CryptoJS.HmacSHA512(message, secret64).toString(CryptoJS.enc.Hex);
// const signed = CryptoJS.enc.Base64.stringify(hmac);
// const signed = Buffer.from(hmac.toString()).toString('base64');
// const utf = CryptoJS.enc.Utf8.parse(hmac);
// const signed = CryptoJS.enc.Base64.stringify(utf).toString();
// const hash = CryptoJS.HmacSHA512(message, secret);
// const signed = CryptoJS.enc.Base64.stringify(hmac);

Ошибка: запрос не выполнен с кодом состояния 400

Что я делаю не так?

...