Я получил аутентификацию OAuth2, работающую в React Native для Coinbase. К сожалению, я понял, что Coinbase Pro не поддерживает OAuth2. Я пытался заставить работать аутентификацию по ключу API. Все примеры, которые я видел, используют библиотеку «crypto» для NodeJS. Я пробовал это, и это устарело и не работает с React и React Native. Я обычно использую библиотеку CryptoJS, которая хорошо работает.
Я не уверен, как форматировать CB-ACCESS-SIGN.
const signed = CryptoJS.HmacSHA512(message, secret).toString();
Это вернет что-то вроде этого:
b24d709a6beb5e7b0b0b763b5af8a10c988d1424ee1ab693618b90f2950b15948e60efaaff0ea0a3e5a759ee7e8ca323a8d890bbe295e25e099d9db32c01c8a1
Должно ли это быть в шестнадцатеричном или base64-кодированном виде?
Мне нужна помощь в создании CB-ACCESS-SIGN.
Я пробовал библиотеку "crypto", которая устарела и не работает в React или React Native.
Я пытался кодировать ключ по-разному, но он не совсем заработал.
Я собрал это вместе, чтобы проверить проблему как можно более конкретно ...
import CryptoJS from 'crypto-js';
import axios from 'axios';
coinbaseOrders = () => {
const { key, secret } = this.state;
const method = 'GET';
const uri = 'https://api.pro.coinbase.com/orders?status=all';
const timestamp = Math.floor(Date.now() / 1000);
const message = `${timestamp}${method}${uri}`;
const signed = CryptoJS.HmacSHA512(message, secret).toString();
// const signed = CryptoJS.enc.Hex.parse(CryptoJS.HmacSHA512(message, secret).toString()).toString();
const headers = {
'User-Agent': 'reactnative',
'Content-Type': 'application/json',
'CB-ACCESS-SIGN': signed,
'CB-ACCESS-TIMESTAMP': timestamp,
'CB-ACCESS-KEY': key,
'CB-VERSION': '2019-05-22'
};
console.log('key', key);
console.log('secret', secret);
console.log('method', method);
console.log('uri', uri);
console.log('timestamp', timestamp);
console.log('message', message);
console.log('signed', signed);
console.log('headers', headers);
axios
.get(uri, {
method,
headers
})
.then((response) => {
console.log(response);
})
.catch((error) => {
console.log(error);
});
}
this.coinbaseOrders();
Ожидаемый результат - список заказов Coinbase Pro для учетной записи API Key.
В зависимости от того, что я пробовал, я получал коды ошибок 400 и 401.