我正在尝试编写一个简单的脚本来验证我正在进行API调用,然后我计划从那里构建一个更复杂的程序。我收到的错误回复是:
{"error":"Invalid API key\/secret pair."}
我正在处理的API文档可以在以下网址找到:
https://poloniex.com/support/api/
我刚刚手动增加现时值以保持简单。
我的代码是:
import urllib
import urllib2
import json
import time
import hmac,hashlib
APIKey = "<my_API_key>"
Secret = "<my_secret>"
post_request
"command=returnBalances"
sign = hmac.new(Secret, post_request, hashlib.sha512).hexdigest()
ret = urllib2.urlopen(urllib2.Request("https://poloniex.com/tradingApi? key=" + APIKey + "&sign=" + sign + "&nonce=0008"))
print ret.read()
答案 0 :(得分:4)
假设您的APIKey和Secret是正常的,以下版本将起作用:
import urllib
import urllib2
import json
import time
import hmac,hashlib
req={}
APIKey = "<my_API_key>"
Secret = "<my_secret>"
command="returnBalances"
req['command'] = command
req['nonce'] = int(time.time()*1000)
post_data = urllib.urlencode(req)
sign = hmac.new(Secret, post_data, hashlib.sha512).hexdigest()
#print sign
headers = {
'Sign': sign,
'Key': APIKey
}
ret = urllib2.urlopen(urllib2.Request('https://poloniex.com/tradingApi', post_data, headers))
jsonRet = json.loads(ret.read())
print jsonRet
如果您使用自己的密钥和API密钥运行此代码,但仍然无效。 这肯定你的APIKey或秘密有输入错误!! [或APIkey仅限于“撤销”或您已选择IP限制并尝试从未知IP连接。]
答案 1 :(得分:1)
API文档说:
所有对交易API的调用都通过HTTP POST发送到https://poloniex.com/tradingApi,并且必须包含以下标题:
- Key - 您的API密钥。
- 签名 - 您的密钥签署的查询POST数据&#34;秘密&#34;根据HMAC-SHA512方法。
此外,所有查询都必须包含&#34; nonce&#34; POST参数。
即使它说&#34; header&#34;,我认为这意味着POST参数。
同时查看文档链接的reference Python implementation,API似乎需要body #wrapper > *
{
visibility: hidden;
display: none;
}
body #wrapper .certificate {
visibility: visible;
display: table;
}
和global
作为标题,Key
作为POST参数。
更改您的请求:
Sign
为:
nonce