Api

通過 Python 進行 API 身份驗證

  • October 29, 2014

我無法按照 LakeBTC 的 API 說明通過 Python 連接到他們的 API。

API 文件: https ://www.lakebtc.com/s/api

我有我的密鑰(電子郵件地址)和秘密。我正在使用 API URL:https ://www.LakeBTC.com/api_v1

無論我嘗試什麼,我都會收到 401 錯誤。以下是我的程式碼,有什麼想法嗎?

tonce = str(int(time.time() * 1e6))

p = 'tonce=' + tonce \
   + '&accesskey=' + self.key \
   + '&requestmethod=post' \
   + '&id=1' \
   + '&method=' + 'getAccountInfo' \
   + '&params='

# Create signature
hmac_obj = hmac.new(self.secret, p, hashlib.sha1)

b64 = 'Basic ' + base64.b64encode(self.key + ':' + hmac_obj.digest())

header = {
   'Json-Rpc-Tonce': tonce,
   'Authorization': b64,
   'content-type': 'application/json-rpc',
}

response = requests.post(self.apiUrl, data=p, headers=header)

我是否正確加密和散列?

仔細看看他們的 API 頁面,你會發現 LakeBTC 提供了一個簡單的 Python 程式碼:https ://github.com/LakeBTC/lakebtc_python

您可以在這裡找到其他範常式式碼:https ://www.lakebtc.com/s/api 包括 PHP、Node.JS、Ruby 和 Python,未來可能會有更多程式碼 :)

我想我發現了你的問題。(或者,至少其中之一。)

第 6 步:將 JSON 格式的參數數據發佈到此 url:

https ://www.LakeBTC.com/api_v1

您沒有發布正確的資訊;您正在發布整個簽名。

response = requests.post(self.apiUrl, data=p, headers=header)

應該是這樣的:

response = requests.post(self.apiUrl, data=json.dumps(
   {
       "method": method,
       "params":",".join(params),
       "id": 1,
   }, headers=header)

引用自:https://bitcoin.stackexchange.com/questions/32093