使用MEXC API获取账户资产数据遇401权限问题求助
解决MEXC合约API 401无权限问题
你的代码返回401错误,核心原因是签名生成逻辑不符合MEXC的规则,以下是修正后的代码及关键说明:
错误分析
- 签名生成时误用了完整URL,MEXC要求签名基于域名后的请求路径(如
/api/v1/private/account/assets)而非带域名的完整URL。 - 冗余添加了
Content-Type请求头,GET请求无需该字段。
修正后的代码
import requests import hmac import hashlib import time api_key = '你的API_KEY' api_secret = '你的API_SECRET' # API请求路径(仅保留域名后的部分) path = '/api/v1/private/account/assets' base_url = 'https://contract.mexc.com' full_url = base_url + path # 生成毫秒级时间戳 timestamp = str(int(time.time() * 1000)) # 构造签名参数串:按参数名ASCII升序排序 params = {'access_key': api_key, 't': timestamp} sorted_params = sorted(params.items()) query_string = '&'.join([f"{k}={v}" for k, v in sorted_params]) # 生成签名:请求方法+路径+参数串 prehash = 'GET' + path + query_string signature = hmac.new(api_secret.encode('utf-8'), prehash.encode('utf-8'), hashlib.sha256).hexdigest() # 请求头仅保留必要字段 headers = { 'api-key': api_key, 't': timestamp, 'sign': signature, 'User-Agent': 'Mozilla/5.0' } # 发送请求并打印结果 response = requests.get(full_url, headers=headers) print(response.status_code) print(response.json())
额外检查项
- 确认API密钥已在MEXC后台开启合约交易权限。
- 若设置了IP白名单,确保当前运行代码的IP在白名单范围内。
- 核对API密钥与密钥,确保无多余空格或字符。
内容的提问来源于stack exchange,提问作者Nick Korovkin
相关产品推荐
相关产品推荐

