该错误提示是由于本地时间和服务器时间的误差导致的。解决方法是在发送请求时动态生成时间戳,避免使用本地时间。示例如下:
import time
import requests
import hashlib
import hmac
base_url = "https://api.binance.com/api/v3"
api_key = ""
secret_key = ""
def generate_signature(query_string):
return hmac.new(secret_key.encode(), query_string.encode(), hashlib.sha256).hexdigest()
def send_request(endpoint, params, method="GET"):
timestamp = int(time.time() * 1000)
params = {**params, 'timestamp': timestamp}
query_string = '&'.join([f"{k}={v}" for k, v in params.items()])
signature = generate_signature(query_string)
headers = {'X-MBX-APIKEY': api_key}
if method == "GET":
response = requests.get(f"{base_url}/{endpoint}?{query_string}&signature={signature}", headers=headers)
elif method == "POST":
response = requests.post(f"{base_url}/{endpoint}?{query_string}&signature={signature}", headers=headers, json=params)
return response.json()
send_request("ticker/price", {"symbol": "BTCUSDT"})