不确定如何验证我的api密钥Kucoin

时间:2017-12-13 04:58:00

标签: python parameters request

我正在学习如何使用Kucoin,并且在向API服务器验证自己时遇到了问题。

我正在尝试加载所有活动订单,但不断收到401错误。

Kucoin API文档声明我需要添加:

{
    "KC-API-KEY": "59c5ecfe18497f5394ded813",  
    "KC-API-NONCE" : 1506219855000   //Client timestamp (exact to 
milliseconds), before using the calibration time, the server does not 
accept calls with a time difference of more than 3 seconds
    "KC-API-SIGNATURE" : 
"fd83147802c361575bbe72fef32ba90dcb364d388d05cb909c1a6e832f6ca3ac"   
//signature after client encryption
}

作为请求标头的参数。我不确定这意味着什么。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

创建标题可能有点棘手。

对于nonce值或任何毫秒时间戳值,我发现生成此值的最佳方法是这样的

import time
int(time.time() * 1000)

签名要求您以查询字符串格式按字母顺序排序参数,将其与路径和随机数组合,然后使用sha256使用您的密钥对字符串进行散列。

如果你想自己实现它,可以从这里复制代码,它可以分解为几个函数,并且应该具有可读性https://github.com/sammchardy/python-kucoin/blob/0ece729c406056a428a57853345c9931d449be02/kucoin/client.py#L117

或者您可能最好只使用该库。 (注意:我是python-kucoin的作者和维护者)

答案 1 :(得分:0)

这是我在 Python 3 中的工作代码:

import requests
import json
import hmac
import hashlib
import base64
from urllib.parse import urlencode
import time

api_key = 'xxxxx'
api_secret = 'xx-xxx-xx'
api_passphrase = 'xxx'   #this is NOT trading password
base_uri = 'https://api.kucoin.com'

def get_headers(method, endpoint):
    now = int(time.time() * 1000)
    str_to_sign = str(now) + method + endpoint
    signature = base64.b64encode(hmac.new(api_secret.encode(), str_to_sign.encode(), hashlib.sha256).digest()).decode()
    passphrase = base64.b64encode(hmac.new(api_secret.encode(), api_passphrase.encode(), hashlib.sha256).digest()).decode()
    return {'KC-API-KEY': api_key,
            'KC-API-KEY-VERSION': '2',
            'KC-API-PASSPHRASE': passphrase,
            'KC-API-SIGN': signature,
            'KC-API-TIMESTAMP': str(now)
    }

#List Accounts
method = 'GET'
endpoint = '/api/v1/accounts'
response = requests.request(method, base_uri+endpoint, headers=get_headers(method,endpoint))
print(response.status_code)
print(response.json())

输出

200
{'code': '200000', 'data': [{'available': blah, blah blah  }]}