非专业使用CoinBase接口时遇到签名无效的问题,通常是由于以下几个基础概念理解不到位或者操作不当导致的:
确保你使用的API密钥是正确的,并且与你的账户关联。
确保你使用的是HMAC-SHA256算法来生成签名。
确保服务器时间与CoinBase服务器时间同步,时间戳误差不应超过几分钟。
CoinBase要求请求参数按字典序排序后再进行签名。
确保所有参数都是UTF-8编码。
import hmac
import hashlib
import time
import requests
from urllib.parse import urlencode
# 假设这是你的API密钥和密钥
api_key = 'your_api_key'
api_secret = b'your_api_secret'
# 请求参数
params = {
'request': '/v2/prices/BTC-USD/spot',
'nonce': int(time.time() * 1000), # 当前时间戳
}
# 按字典序排序并编码
encoded_params = urlencode(sorted(params.items()))
# 生成签名
signature = hmac.new(api_secret, encoded_params.encode('utf-8'), hashlib.sha256).hexdigest()
# 构建请求头
headers = {
'CB-ACCESS-KEY': api_key,
'CB-ACCESS-SIGN': signature,
'CB-ACCESS-TIMESTAMP': str(params['nonce']),
'Content-Type': 'application/json'
}
# 发送请求
response = requests.get('https://api.coinbase.com/v2/prices/BTC-USD/spot', headers=headers)
print(response.json())
通过以上步骤和示例代码,你应该能够解决签名无效的问题。如果问题依旧存在,建议检查CoinBase的官方文档或联系其技术支持获取帮助。
领取专属 10元无门槛券
手把手带您无忧上云