繁体   English   中英

使用python给Blinktrade Rest API消费错误

[英]Consuming Blinktrade Rest API with python given error

我是python的新手。 只需几个小时即可学习。

我正在尝试使用REST API来获取一些帐户信息...

这是我的要求:

def getAccountData():
    nonce = int(datetime.datetime.now().timestamp())
    signature = hmac.new(b'TDDh8djV3NwXt53gSrScDul6o6w3HnnZsHuh6HTF9SA', msg=nonce, digestmod=hashlib.sha256).digest()
    print(signature)
    headers = {
            'content-type': 'application/json',
            'APIKey':conf['API_KEY'],
            'Nonce':str(nonce),
        }
    data = {
            "MsgType": "U2",
            "BalanceReqID": 1
        }   
    r = requests.post('https://api.blinktrade.com/tapi/v1/message', data=data, headers=headers)
    print(r.json())

这是错误:

追溯(最近一次通话最后一次):getAccountData()中的文件“ foxbit.py”,第51行,getAccountData中的文件“ foxbit.py”,行30,签名= hmac.new(b'TDDh8djV3NwXt53gSrScDul6o6w3HnnZsHuh6HTFF9SA',msg = nonce, = hashlib.sha256).digest()文件“ C:\\ Python \\ Python35 \\ lib \\ hmac.py”,第144行,位于新的返回HMAC(key,msg,digestmod)文件“ C:\\ Python \\ Python35 \\ lib \\ “ hmac.py”,第84行, init self.update(msg)文件“ C:\\ Python \\ Python35 \\ lib \\ hmac.py”,第93行,更新self.inner.update(msg)TypeError:对象支持需要缓冲API

我正在尝试使用此API: https://blinktrade.com/docs/?shell#balance : https://blinktrade.com/docs/?shell#balance balance方法

没有成功。

我想创建和python应用程序来观看我打开的比特币订单。 此错误是怎么回事? 关于文档,说我需要这样做:

{
    "MsgType": "U2",
    "BalanceReqID": 1
}
message='{ "MsgType": "U2", "BalanceReqID": 1 }'

api_url='API_URL_REST_ENDPOINT'
api_key='YOUR_API_KEY_GENERATED_IN_API_MODULE'
api_secret='YOUR_SECRET_KEY_GENERATED_IN_API_MODULE'

nonce=`date +%s`
signature=`echo -n "$nonce" | openssl dgst -sha256 -hex -hmac "$api_secret" | cut -d ' ' -f 2`

curl -X POST "$api_url"              \
  -H "APIKey:$api_key"               \
  -H "Nonce:$nonce"                  \
  -H "Signature:$signature"          \
  -H "Content-Type:application/json" \
  -d "$message"

3小时尝试,什么都没有! 嘿,我需要一些帮助。

主要问题是生成签名时您没有将现时作为字节数组格式传递。

这是python 3.4之后的更改

hmac现在接受bytearray以及new()函数的key参数的字节,并且new()函数和update()方法的msg参数现在接受hashlib模块支持的任何类型。 (由JonasBorgström在bpo-18240中贡献。)

https://docs.python.org/3/whatsnew/3.4.html#hmac

在nonce上传递bytearray数组应该可以正常工作。

signature = hmac.new(b'SECRET', msg=bytearray(nonce), digestmod=hashlib.sha256).digest()

另外,您忘记了Signature标头。

您可以遵循这个具有非常有用的python示例的要点,它实际上是基于python2构建的,但是您仍然可以遵循它,并且非常容易上手。 https://gist.github.com/pinhopro/60b1fd213b36d576505e

作为BlinkTrade的员工,不要犹豫,问我任何事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM