Coinbase GDAX NodeJS — Неверный ключ API

Я пытаюсь написать скрипт, который отменит все мои ордера на GDAX. Согласно документации по отмене заказа, мне нужно отправить запрос DELETE на / удалять. Но я предполагаю, что прежде чем я смогу это сделать, мне нужно сначала подписать сообщение.

Когда я отправляю запрос с помощью fetch в Node, я получаю следующий ответ: { сообщение: "Неверный ключ API"

Вот пример кода, над которым я работаю, с заменой конфиденциальных вещей, конечно:

var crypto = require('crypto');
var fetch = require('fetch');

const coinbaseSecret = 'abc...';
const coinbaseAPIKey = 'abc...';
const coinbasePassword = 'abc...';
const coinbaseRestAPIURL = "https://api-public.sandbox.gdax.com";

function start(){
	getTime(function(time){
		cancelAll(time, function(){
			console.log('done');
		});
	});
}

function getTime(callback){
	fetch.fetchUrl(coinbaseRestAPIURL + '/time', null, function(error, meta, body){
		var response = JSON.parse(body.toString());
		console.log('response', response);

		var timeStamp = response.epoch;
		callback(timeStamp);
	});
}

function cancelAll(timeStamp, callback) {
	// Refer to https://docs.gdax.com/#cancel-an-order

	var signature = getSignature('DELETE', '/delete', "");
	console.log('signature', signature);
	
	var headers = {
		'Content-Type': 'application/json',
		'CB-ACCESS-KEY': coinbaseAPIKey,
		'CB-ACCESS-SIGN': signature,
		'CB-ACCESS-TIMESTAMP': timeStamp, //Date.now() / 1000,
		'CB-ACCESS-PASSPHRASE': coinbasePassword
	};
	console.log('headers', headers);

	fetch.fetchUrl(coinbaseRestAPIURL + '/delete', {
		method: 'DELETE',
		headers: headers
	}, function(error, meta, body){
		var response = JSON.parse(body.toString());
		console.log('response', response);
		callback();
	})
}

function getSignature(method, requestPath, body) {
	// Refer to https://docs.gdax.com/#signing-a-message

	const secret = coinbaseSecret;
	const timestamp = Date.now() / 1000;
	const what = timestamp + method + requestPath + body;
	const key = Buffer(secret, 'base64');
	const hmac = crypto.createHmac('sha256', key);
	const signature = hmac.update(what).digest('base64');

	return signature;
}

start();


person Anthony Tietjen    schedule 29.09.2017    source источник


Ответы (1)


Перейдите в репозиторий Gdax-Node на Github и посмотрите их код и примеры.

1) Создайте authenticationClient, настроив его с вашими данными API, 2) Затем просто используйте объект authedClient и метод calncelAllOrders:

authedClient.cancelAllOrders({product_id: 'BTC-USD'}, callback);

Вы можете обернуть это функцией для вызова «x» количество раз (это указано в документации), или вы можете придумать что-то более интересное, если хотите.

Примечание. Убедитесь, что вы используете репозиторий github, а не устанавливайте его напрямую из npm, так как есть несколько ошибок и проблем, которые были исправлены в репозитории git, но НЕ перенесены в npm.

... поэтому используйте npm install coinbase/gdax-node при загрузке пакета gdax.

Надеюсь, это немного поможет...

person DevStormUK    schedule 03.01.2018