HMAC прописывается в заголовках запросов, но заголовки должны быть str error? - PullRequest
0 голосов
/ 26 декабря 2018
    apikey = '$mykey'
    apisecret = '$mykeysecret'
    nonce = str(int(time.time() * 1000))
    uri = 'https://somewebsite.com/api/v1.5/account/getbalances?apikey='+apikey+'&nonce='+nonce
    sign = hmac.new(b'apisecret', b'uri', hashlib.sha512)
    response = requests.get(uri, headers={'apisign': sign}, timeout=10)
    print(json.dumps(response, sort_keys=True, indent=4))

 """ The following are the example provided by the website """
    # $ch = curl_init($uri);
    # curl_setopt($ch, CURLOPT_HTTPHEADER, array('apisign:'.$sign));
    # $execResult = curl_exec($ch);
    # $obj = json_decode($execResult);
    # url = "https://somewebsite.com/api/v1.5/account/getbalances?apikey=API_KEY"

Я просто не могу решить эту проблему после 2 часов исследований.Теперь говорится, что заголовки должны быть ул.Но, используя str {'apisign': sign}, он говорит, что у объекта str нет элемента.

1 Ответ

0 голосов
/ 27 декабря 2018

Вы правильно передаете словарь в аргумент заголовков, но ошибка говорит о том, что значение sign не является строкой.sign является объектом HMAC, и его необходимо преобразовать в строку:

>>> print(sign)
<hmac.HMAC object at 0x03337950>

Я бы взглянул на вызов sign.digest(), чтобы увидеть, возвращает ли он ожидаемую строку.Если это так, то вы можете заменить headers={'apisign': sign} на headers={'apisign': sign.digest()}.

...