Почему аутентификация по ключу API не работает в Coinbase Pro с использованием Crypto-JS? - PullRequest
1 голос
/ 08 июля 2019

Я действительно борюсь за то, чтобы аутентификация API-ключа работала с Coinbase Pro с использованием библиотеки Crypto-JS в React Native.

Я следовал приведенным здесь инструкциям: https://docs.pro.coinbase.com/#authentication

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

export const baseURL = 'https://api.pro.coinbase.com';
export const axiosTimeout = 10 * 1000; // 10 sec

export const addHeaders = (additional) => {
  const headers = {};
  return Object.assign(
    headers,
    {
      Accept: 'application/json',
      'User-Agent': 'rn-coinbasepro-app',
      'Content-Type': 'application/json'
    },
   additional
  );
};

componentDidMount() {
  const auth = {
    key: '',
    secret: '',
    passphrase: ''
  };

  const method = 'GET';
  const url = `${baseURL}/orders?status=all`;
  const timestamp = Date.now() / 1000;
  const requestPath = '/orders?status=all'
  const what = timestamp + method + requestPath;
  const key = Buffer.from(auth.secret, 'base64').toString('ascii');
  const hmac = CryptoJS.HmacSHA256(what, key);
  const signature = CryptoJS.enc.Base64.stringify(hmac);

  axios.interceptors.request.use((request) => {
    console.log('Starting Request', request);
    return request;
  });

  axios.interceptors.response.use((response) => {
    console.log('Response:', response);
    return response;
  });

  axios
    .get(url, {
      timeout: axiosTimeout,
      headers: addHeaders({
        method,
        timeout: axiosTimeout,
        'CB-ACCESS-KEY': auth.key,
        'CB-ACCESS-SIGN': signature,
        'CB-ACCESS-TIMESTAMP': timestamp,
        'CB-ACCESS-PASSPHRASE': auth.passphrase
      }),
      debug: true
    })
    .then((response) => {
      console.log(response);
      if (response.status === 200) {
        console.log(response.data);
      } else {
        console.log(response);
      }
    })
    .catch((error) => {
      console.log(error);
    });
}

Продолжает возвращаться 401 (Unauthorized - Invalid API Key)

Я следовал инструкциям и думаю, что все сделал правильно.Я просто не вижу, что не так, и Coinbase Pro API возвращает очень мало, чтобы объяснить, почему.

...