Я пытаюсь получить доступ к остаткам своего кошелька в Bittrex через вызовы API Bittrex, но по какой-то причине получаю ответное сообщение INVALID_SIGNATURE
.
Я использую эти функции для создания подписи:
Получить один раз
private String GetNonce()
{
long ms = (long)((DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds);
return ms.ToString();
}
Получить подпись
private String GetApiSignature(String key, String message)
{
using (var hmacsha512 = new HMACSHA512(Encoding.UTF8.GetBytes(key)))
{
hmacsha512.ComputeHash(Encoding.UTF8.GetBytes(message));
return string.Concat(hmacsha512.Hash.Select(b => b.ToString("x2")).ToArray());
}
}
Вот как я «компилирую» свои звонки:
public String ApiQuery(String requestUrl)
{
url = new Uri(requestUrl);
webreq = WebRequest.Create(url);
signature = GetApiSignature(apiSecret, requestUrl);
webreq.Headers.Add("apisign", signature );
webresp = webreq.GetResponse();
stream = webresp.GetResponseStream();
strRead = new StreamReader(stream);
String rtn = strRead.ReadToEnd();
return rtn;
}
Я получаю ту же подпись, что и оболочка Python API делает с теми же url
и nonce
и т. д., но не может получить доступ к моим балансам. Когда я делаю вызов, который не требует никаких подписей, он работает просто отлично... Совершенно не уверен, что я делаю не так.