微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无效的API密钥,方法是使用python编码密钥并使用请求获取一些数据

如何解决无效的API密钥,方法是使用python编码密钥并使用请求获取一些数据

我尝试使用API​​从Exchange平台访问数据。 我有我的API_Key和我的SECRET_KEY,并且在这里有该平台的文档: https://apidocs.exir.io/ 我按照“身份验证”一章中的文档中的描述生成“签名密钥”,然后尝试使用仅具有一个参数的示例GET请求对其进行测试。 现在,如果我运行代码,我将得到"message": "Access Denied: Invalid API Signature" 您能帮我在这代码中找到错误的地方吗? 我认为我对params做错了,因为如果我使用其他不带参数的GET指令,它将起作用!

提前谢谢!

import time
import json
import hmac
import hashlib
import requests

API_KEY = '*****'
SECRET_KEY = '*****'
BASE_URL = 'https://api.exir.io'

timestamp = str(int(time.time()+10))

headers = {
    'api-key': API_KEY,'api-expires': timestamp} # see documentation under "Authentication"

PATH = '/v1/user/orders' # This ist just a simple example,which uses "params". See Exir documentation under "Get All Orders"
params = {"symbol":"btc-irt"}

string = 'GET'+timestamp+str(params) # see Exir API doumentation under "Authentication"

headers['api-signature'] = hmac.new(SECRET_KEY.encode('utf-8'),string.encode('utf-8'),hashlib.sha256).hexdigest()

url = 'https://api.exir.io/v1/user/orders?symbol=btc-irt'

r = requests.get(url,headers=headers)
data = r.json()
print(json.dumps(data,indent=2))

解决方法

实际上,您所做的许多事情都是不必要的。请求库可处理您要执行的大部分操作。

import requests

API_KEY = '*****'
SECRET_KEY = '*****'
BASE_URL = 'https://api.exir.io'

timestamp = str(int(time.time()+10))

headers = {
    'api-key': API_KEY,'api-expires': timestamp
    }

url = 'https://api.exir.io/v1/user/orders?symbol=btc-irt'

r = requests.get(url,headers=headers)

该库将为您进行编码。

,

您混合了帖子并获取了请求参数。对于 get 请求,您只需要在 URL 中包含参数即可进行签名。在您的情况下,它将是:

PATH = '/v1/user/orders?symbol=btc-irt' 
string = 'GET/' + PATH + timestamp

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。