gpt4 book ai didi

c# - RestSharp BitStamp 身份验证失败

转载 作者:行者123 更新时间:2023-11-30 20:51:31 25 4
gpt4 key购买 nike

我无法从 BitStamp API 接收任何数据。我在这里做错了什么?我的内容形成了错误的响应结果:

{"error": "Missing key, signature and nonce parameters"}

public ActionResult Index()
{
const string BaseUrl = "https://www.bitstamp.net/api/balance/";
var client = new RestClient();
var request = new RestRequest();

client.BaseUrl = BaseUrl;
AddApiAuthentication(request);
var response = client.Execute(request);
var foo = response.Content;
//{"error": "Missing key, signature and nonce parameters"}
return View();
}

public void AddApiAuthentication(RestRequest restRequest)
{
var nonce = DateTime.Now.Ticks;
var signature = GetSignature(nonce, apiKey, apiSecret, clientId);

restRequest.AddParameter("key", apiKey);
restRequest.AddParameter("signature", signature);
restRequest.AddParameter("nonce", nonce);

}

private string GetSignature(long nonce, string key, string secret, string clientId)
{
string msg = string.Format("{0}{1}{2}", nonce, clientId, key);
return ByteArrayToString(SignHMACSHA256(secret, StrinToByteArray(msg))).ToUpper();
}

public static byte[] SignHMACSHA256(String key, byte[] data)
{
HMACSHA256 hashMaker = new HMACSHA256(Encoding.ASCII.GetBytes(key));
return hashMaker.ComputeHash(data);
}

public static byte[] StrinToByteArray(string str)
{
return System.Text.Encoding.ASCII.GetBytes(str);
}

public static string ByteArrayToString(byte[] hash)
{
return BitConverter.ToString(hash).Replace("-", "").ToLower();
}

API 身份验证似乎对 this post 中的用户有效.我是否以正确的方式执行请求?

最佳答案

对于我们的新应用程序,我们使用了以下代码:

public class BitstampAuthenticatedRequest : RestRequest
{
#region Data
private readonly string _clientId = "xxxxx"; // Numbers

private readonly string _apiKey = "xxxxx"; // Random numbers and letters
private readonly string _apiSecret = "xxxx"; // Random numbers and letters

private long Nonce = DateTime.Now.Ticks;

#endregion

#region Constructor

public BitstampAuthenticatedRequest(string resource, Method method)
: base(resource, method)
{
this.AddParameter("key", _apiKey);
this.AddParameter("nonce", Nonce);
this.AddParameter("signature", CreateSignature());
}

#endregion

#region Methods

private string CreateSignature()
{
string msg = string.Format("{0}{1}{2}", Nonce,
_clientId,
_apiKey);

return ByteArrayToString(SignHMACSHA256(_apiSecret, StringToByteArray(msg))).ToUpper();
}

private static byte[] SignHMACSHA256(String key, byte[] data)
{
HMACSHA256 hashMaker = new HMACSHA256(Encoding.ASCII.GetBytes(key));
return hashMaker.ComputeHash(data);
}

private static byte[] StringToByteArray(string str)
{
return System.Text.Encoding.ASCII.GetBytes(str);
}

private static string ByteArrayToString(byte[] hash)
{
return BitConverter.ToString(hash).Replace("-", "").ToLower();
}

#endregion
}

然后这样调用它:

        // Decide which url to use
var baseUrl = "https://www.bitstamp.net/api/balance/";

// Create the authenticated request
RestRequest request = new BitstampAuthenticatedRequest(baseUrl, Method.POST);

// Get the response
var response = new RestClient().Execute(request);

Justed 在控制台应用程序中再次测试了代码,并且可以正常工作。如果您需要进一步的帮助,请发表评论。

关于c# - RestSharp BitStamp 身份验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21612185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com