我一直试图使用Poloniex API g。我从我的帐户中获得了一个密钥和秘密,正是like this。然后,按照示例,我应该使用以下形式之一:
import poloniex
polo = poloniex.Poloniex('yourApiKeyHere','yourSecretKeyHere123')
# or
polo.APIKey = 'yourApiKeyHere'
polo.Secret = 'yourSecretKeyHere123'
通过使用其中任何一个,我收到此错误:
TypeError: key: expected bytes or bytearray, but got 'str'
我试过了:
polo.Secret = b'yourSecretKeyHere123'
得到:
TypeError: Unicode-objects must be encoded before hashing
所以我试过了:
polo.Secret = 'yourSecretKeyHere123'.encode('utf-8')
我在编码方面有点超出我的深度,并且还期望API只将我的密钥作为字符串。我错过了什么?
答案 0 :(得分:1)
此代码将起作用(假设您的Secret& APIKey存在,并且该API不是IP或仅限撤销):
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