我在React Native for Coinbase中使用了OAuth2身份验证。不幸的是,我意识到Coinbase Pro不支持OAuth2。我一直在尝试使API密钥身份验证正常工作。我看到的所有示例都使用NodeJS的“ crypto”库。我已经尝试过了,它已经贬值了,不能在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();
预期结果是API密钥帐户的Coinbase Pro订单列表。
根据我的尝试,我收到了错误代码400和401。