- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 F# 访问 Kraken 私有(private) API。访问公共(public) API 的代码运行得非常好,但是当我尝试访问私有(private) API 时,我总是收到错误“EGeneral:Invalid arguments”。
#r "FSharp.Data.dll"
open FSharp.Data
open System
open System.Text
open System.Security.Cryptography
let baseUri = "https://api.kraken.com"
let key = MY_KRAKEN_API_KEY
let secret = MY_KRAKEN_API_SECRET
let path = "/0/private/Balance"
let nonce = DateTime.UtcNow.Ticks
let bodyText = "nonce=" + nonce.ToString()
let hmac (key : byte []) (data : byte[]) =
use hmac = new HMACSHA512(key)
hmac.ComputeHash(data)
let sha256 (data : string) =
use sha = SHA256Managed.Create()
sha.ComputeHash(Encoding.UTF8.GetBytes(data))
let createSignature (nonce : int64) body (path : string) secret =
let shaSum = nonce.ToString() + body |> sha256
let data = Array.append (Encoding.UTF8.GetBytes path) shaSum
let key = Convert.FromBase64String secret
hmac key data |> Convert.ToBase64String
let signature = createSignature nonce bodyText path secret
let response = Http.RequestString (
url = baseUri + path,
httpMethod = "POST",
headers = ([("API-Key", key); ("API-Sign", signature)] |> Seq.ofList),
body = TextRequest bodyText
)
有人看到我做错了什么吗?
编辑:Kraken.com API 文档可在此处获取:https://www.kraken.com/help/api
我想 header 签名不正确。文档要求在 header 中提交以下两个值:
API-Key = API key API-Sign = Message signature using HMAC-SHA512 of (URI path + SHA256(nonce + POST data)) and base64 decoded secret API key
编辑 2:其余参数需要使用 POST 方法传输。在我的例子中,这只是 HTTP 请求正文部分中的“nonce”值。
最佳答案
我在为 Kraken 编写 C# 库时遇到了同样的错误,我找到了这个问题的解决方案:
如果 API key 或符号错误或丢失,则不会出现此错误。问题是您没有在请求中添加媒体类型。我不知道它在 F# 中是如何工作的,但看看这个例子:
using (var client = new HttpClient())
{
string address = String.Format("{0}/{1}/public/{2}", _url, _version, method);
// Does not work with this:
// var content = new StringContent(postData, Encoding.UTF8);
var content = new StringContent(postData, Encoding.UTF8, "application/x-www-form-urlencoded");
var response = await client.PostAsync(address, content);
return await response.Content.ReadAsStringAsync();
}
"application/x-www-form-urlencoded" 是关键路径。如果您不发送请求,您将收到“EGeneral:无效参数”错误。有了它,一切正常。至少就我而言。
关于rest - 带有 F# 的 Kraken 私有(private) API 返回 EGeneral : invalid arguments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36679353/
我正在尝试使用 REST API 从 Kraken 检索 3 个月的 30 分钟蜡烛历史记录: https://www.kraken.com/help/api 按照文档,我向 URL 发出了这个 PO
所以我目前正在为 Java 实现 Kraken API。我正在使用我在 http://pastebin.com/nHJDAbH8 上找到的示例代码. Kraken ( https://www.krak
我使用 gitkraken 已经有一段时间了,但我注意到在 v2.5 之后菜单栏(或工具栏)丢失了。结果我无法最小化 gitkraken。所以如果我想在 gitkraken 和另一个之间切换窗口我必须
我正在使用Kraken API,但无法对响应中的信息找到很好的解释。 实际上,对于给定的一对,我有以下信息: altname = alternate pair name acl
使用 kraken.js (express.js 框架)我正在构建一个本地化网站。标题中有 3 个更改语言的链接 FR | EN | DE 如果语言环境设置为 FR(根据 cookie),我希望 FR
如何在配置文件 ( config.js |development.js ) 中访问我的自定义配置? config.js |开发.js: { "database": { "use
简单查询后 k.query_public('Ticker', {'pair' : 'GNOETH'})['result']['GNOETH']['b'][0]) 如果我遇到超时或其他异常(如 504)
我正在尝试将一个工作示例从 C sharp 更改为 Java,但我正在努力并且不知道问题出在哪里。我联系了 Kraken,他们告诉我我的签名有误……回复是: {"error":["EAPI:Inval
我想尝试将 Kraken API 与 Java 结合使用。我知道如何获取公共(public)信息,但是如何通过输入参数获取私有(private)信息? 小例子: aclass = asset clas
我正在尝试找到一种方法来生成使用 jade 而不是 dust 模板的 Kraken.js 项目。根据their documentation您应该能够将模板引擎作为参数传递,所以 yo kraken -
我正在尝试使用 KrakenJS,尝试构建一个基本的 API 来理解事物。 我不确定的一件事是中间件,特别是 404/500 错误处理。 "fileNotFound": { "enable
我正在使用 git kraken 客户端 gui,我需要对存储库执行强制推送。如果有人能指导我在 git kraken 上执行强制推送的步骤,我将不胜感激。 最佳答案 正如@Viktor Seč 评论
所以我有一个从 develop 创建的名为 feature/123 的分支 我已经完成了一些工作,但与此同时进行了开发,现在我的分支落后了。我需要 rebase 但不确定如何在 git kraken
我希望能够制作一个像这样的常量 var BASE_URL = 'http://example.com'; 并使其可以在我的所有 kraken JS Controller 中访问。我应该在哪里定义这个?
我想准确反射(reflect) cryptowatch.de 上的 RSI 值(在我的例子中是 LTC-EUR),我使用了网站 stockcharts.com ,解释了如何计算 RSI,用 Javas
我有一个变量来保存我的 Sequelize 连接,如下所示: var sequelize = new Sequelize('database', 'username'); 对于 Kraken.js,如
我有一个关于 krakenjs 的问题,我是一个 node/express 新手。 krakenjs 设置为默认 csrf 保护(我知道如何禁用,但我不想),但我不知道如何处理 csrf 和避免 40
是否可以在 kraken.js 应用程序中针对 404 和 500 错误使用不同的模板?下面是如何启用中间件并告诉它使用什么模板。对于我的应用程序,我需要根据用户所在网站的哪个部分使用不同的模板。 "
我正在尝试托管在 heroku 上设置准系统 kraken-js 应用程序时出现的默认应用程序,但出现以下错误: $ heroku ps:scale web=1 Scaling web dynos..
我已按照 kraken.js 示例为我的网站获取 i18n。因此,现在,每种设置语言都会呈现 1 个模板文件。 例如:index.dust 可以用法语、英语和荷兰语呈现。我现在想要实现的是,如果用户转
我是一名优秀的程序员,十分优秀!