Python: использование HMAC-подписи для использования API (реализация из примера PHP)

У меня есть небольшие проблемы, когда я пытаюсь использовать API обмена биткойнов через Python.
У меня есть пример функции в PHP:

function bitmarket_api($method, $params = array())
{
$key = "my_key";
$secret = "my_secret";
$params["method"] = $method;
$params["tonce"] = time();
$post = http_build_query($params, "", "&");
$sign = hash_hmac("sha512", $post, $secret);
$headers = array(
"API-Key: " . $key,
"API-Hash: " . $sign,
);

$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_URL, "https://www.bitmarket.pl/api2/");
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$ret = curl_exec($curl);
return json_decode($ret);
}

И это моя реализация Python:

def bitmarket_api(method, params):

key = 'my_key'
secret = 'my_secret'
url = 'https://www.bitmarket.pl/api2/'

params['method'] = method
params['tonce'] = timestamp()

post = urllib.urlencode(params)
sign = base64.b64encode(str(HMAC(secret, post, sha512).digest()))

headers = {}

headers['API-Key:'] = key
headers['API-Hash:'] = sign

req = urllib2.Request(url, post, headers)
res = urllib2.urlopen(req, post)
return json.load(res)

Итак, когда я пытаюсь вызвать информационный метод (или другой метод), я получаю ошибку «Неверный ключ API».
Я искал решение, и я пытался несколько другой подход без успеха.
Ребята, вы можете мне помочь? Я думаю, что проблема может быть в заголовках …
Пожалуйста, извините за мой плохой английский. Я стараюсь изо всех сил, но я все еще делаю ошибки.

1

Решение

Используйте библиотеку Python HMAC Auth с Requests lib
https://github.com/bazaarvoice/python-hmac-auth

Приятно и аккуратно позволить вашему клиенту собрать без особых проблем.

0

Другие решения

Других решений пока нет …