Я пытался связаться с частным API на Kraken. Полученная ошибка говорит о том, что {"error": ["EAPI: Неверный ключ"]} правильные шаги шифрования / дешифрования. Я пробовал создавать новые ключи, не помогает. Мне интересно, если «формат» переменной подписи является неправильным, хотя и является правильным по своей природе. Любая помощь будет принята с благодарностью!
function balance () {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("API_read_only");
var key = sheet.getRange("B5").getValue()
var secret = sheet.getRange("B6").getValue()
// (метод API, nonce и данные POST)
var path = "/0/private/TradeBalance"
var nonce = new Date () * 1000
var postdata = "nonce=" + nonce
// Алгоритмы
// Рассчитать SHA256 одноразового номера и данных POST // с использованием скрипта goolge lib // с использованием функции succint из возвращает строковое представление из байта computeDigest (алгоритм, значение) []
function SHA_256 (str) {
return Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_256, str).reduce(function(str,chr){
chr = (chr < 0 ? chr + 256 : chr).toString(16);
return str + (chr.length==1?'0':'') + chr;
},'');
}
var api_sha256 = SHA_256(nonce + postdata)
// Декодировать секрет API (частную часть ключа API) из base64 // нужно stringyfy
var base64 = Utilities.base64Decode(secret)
var base64s = Utilities.newBlob(base64).getDataAsString()
// Вычислить HMA C пути URI и SHA256, используя SHA512 в качестве HMA C ha sh и в качестве декодированного секрета API в виде ключа HMA C
var hamc512_uri = Utilities.computeHmacSha256Signature(path + api_sha256,base64s)
var hamc512_uris = Utilities.newBlob(hamc512_uri).getDataAsString()
// Кодирование HMA C в base64
var signature = Utilities.base64Encode(hamc512_uris)
Logger.log(signature)
//An example of the algorithm using the variables shown above is as follows:
//Base64Encode(HMAC-SHA512 of ("/0/private/TradeBalance" + SHA256("1540973848000nonce=1540973848000&asset=xxbt")) using Base64Decode("FRs+gtq09rR7OFtKj9BGhyOGS3u5vtY/EdiIBO9kD8NFtRX7w7LeJDSrX6cq1D8zmQmGkWFjksuhBvKOAWJohQ==") as the HMAC key
// Результатом является значение / подпись API-знака.
// connect
var url = "https://api.kraken.com" + path;
var options = {
method: 'post',
headers: {
'API-Key': key,
'API-Sign': signature
},
payload: postdata
};
var response = UrlFetchApp.fetch (url, options);
json = response.getContentText ();
Logger.log(json)
}