我试图向API发出第一个POST请求。出于某种原因,我总是得到状态403作为回报。我怀疑它的签名是错误生成的。 api-key和客户端ID肯定是正确的。
我的代码
nonce <-as.integer(Sys.time())
post_message <- paste0(nonce, data_client.id, data_key) # data_client.id = client id # data_key = key
sha.message <- toupper(digest::hmac(data_secret, object = post_message, algo = 'sha256', serialize = TRUE))
url <- 'https://www.bitstamp.net/api/v2/balance/'
body = list('API-KEY' = data_key, 'nonce' = nonce, 'signature' = sha.message)
httr::POST(url, body = body, verbose())
输出
<- HTTP/1.1 403 Authentication Failed
我尝试访问Bitstamp API:https://www.bitstamp.net/api/?package=Rbitcoin&version=0.9.2
所有私有API调用都需要身份验证。为了成功 验证您需要提供您的API密钥,签名和 nonce参数。
API KEY
要获取API密钥,请转到&#34;帐户&#34;,&#34;安全&#34;然后&#34; API访问&#34;。 设置权限并单击&#34;生成密钥&#34;。
NONCEN
一次是常规整数。它必须随着每一个增加 请求你。在这里阅读更多相关信息。示例:如果设置nonce 在第一次请求中,您必须将其设置为至少2 第二个请求。你不需要从1.开始 练习是对该参数使用unix时间。
SIGNATURE
Signature是包含nonce,customer的HMAC-SHA256编码消息 ID(可在此处找到)和API密钥。 HMAC-SHA256代码必须是 使用您的API密钥生成的密钥生成。 此代码必须转换为它的十六进制表示(64 大写字符)。
答案 0 :(得分:1)
我不确定您的问题是否仍然存在,但根据您的代码,我设法让它正常运行。事实上,主要的问题是在正文中,API文档显示它期望&#39;关键&#39;而不是API-KEY&#39;。 此外,序列化应为FALSE而不是TRUE。
目前这有效(但API可能会改变):
nonce <-as.integer(Sys.time())
post_message <- paste0(nonce, data_client.id, data_key) # data_client.id = client id # data_key = key
sha.message <- toupper(digest::hmac(data_secret, object = post_message, algo = 'sha256', serialize = FALSE))
url <- 'https://www.bitstamp.net/api/v2/balance/'
body = list('key' = data_key, 'nonce' = nonce, 'signature' = sha.message)
httr::POST(url, body = body, verbose())