Coinbase未经授权的访问

时间:2019-09-03 09:27:45

标签: c# coinbase-api

我正在尝试使用以下API https://api.coinbase.com/列出我的coinbase帐户。

我使用了以下路径GET https://api.coinbase.com/v2/accounts

我系统地拒绝了“未经授权(401)错误”

下面我做了一些重要的检查:

  • 我的软件正确地获得了资源,不需要像/v2/time这样的特定授权级别
  • 我自创建API密钥以来已经等待了48个小时
  • 我已经在所有帐户(BTC钱包,EUR钱包等)上设置了所有特权
  • 我设法查看我在交易帐户https://api.pro.coinbase.com/上的余额

有什么想法吗?

HttpClient _httpClient


var timeStamp = GetSecondsSinceEpoch();
var signature = ComputeSignature($"{timeStamp}GET/v2/accounts", privateKey);

_httpClient.DefaultRequestHeaders.Add("User-Agent", "MyAppClient");
_httpClient.DefaultRequestHeaders.Add("CB-ACCESS-KEY", publicKey);
_httpClient.DefaultRequestHeaders.Add("CB-ACCESS-SIGN", signature);
_httpClient.DefaultRequestHeaders.Add("CB-ACCESS-TIMESTAMP", timeStamp); 

private static string ComputeSignature(string preHashString, string privateKey)
{
    try
    {
        using (var hmac = new HMACSHA256(Convert.FromBase64String(privateKey)))
        {
            var hash = hmac.ComputeHash(Encoding.UTF8.GetBytes(preHashString));
            return Convert.ToBase64String(hash);
        }
    }
    catch (Exception)
    {
        //
    }

    return string.Empty;
}

var response = await _httpClient.DefaultRequestHeaders.GetAsync(new Uri("https://api.coinbase.com/v2/accounts"));
response.EnsureSuccessStatusCode();
var jsonString = await response.Content.ReadAsStringAsync();

编辑

实际上,为了访问GET https://api.coinbase.com/v2/accounts,似乎我们应该使用OAuth授权而不是API KEY,因此它采用的形式是:

_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer","MyAccessToken")

一旦通过我的Coinbase主帐户创建了Oauth访问权限,我就成功地使用Invoke-WebRequest命令检索了我的帐户信息,但是仍然获得了与CSharp代码等效的Unauthorized (401) error

0 个答案:

没有答案