Python:使用HMAC签名使用API​​(从PHP示例实现)

时间:2014-10-06 01:51:17

标签: php python api hmac bitcoin

当我尝试通过python使用比特币交换API时,我遇到了一些麻烦。 我在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)

因此,当我尝试调用info方法(或其他方法)时,我会得到无效的API密钥'错误。 我一直在寻找解决方案,而我正在尝试其他一些没有成功的方法。 你们能帮助我吗?我认为问题可以在标题中...... 请原谅我可怜的英语。我尽力做到最好,但我仍然犯错误。

1 个答案:

答案 0 :(得分:0)

将Python HMAC Auth lib与Requests lib一起使用 https://github.com/bazaarvoice/python-hmac-auth

让你的客户毫不费力地建立你的客户,这很好,很整洁。