来自API的Python密钥编码

时间:2016-03-09 18:51:18

标签: python api encoding key

我一直试图使用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只将我的密钥作为字符串。我错过了什么?

1 个答案:

答案 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