143 lines
3.9 KiB
Markdown
143 lines
3.9 KiB
Markdown
# API密钥配置指南
|
||
|
||
## 错误代码 -2015 解决方案
|
||
|
||
如果遇到 `APIError(code=-2015): Invalid API-key, IP, or permissions for action` 错误,请按照以下步骤检查:
|
||
|
||
## 1. 检查API密钥状态
|
||
|
||
### 登录币安账户
|
||
1. 访问 [币安官网](https://www.binance.com) 或 [币安测试网](https://testnet.binancefuture.com)
|
||
2. 进入 **账户** → **API管理**
|
||
|
||
### 检查API密钥
|
||
- ✅ API密钥状态是否为 **启用**
|
||
- ✅ API密钥是否已过期
|
||
- ✅ API密钥是否被删除
|
||
|
||
## 2. 检查API密钥权限
|
||
|
||
### 必需权限
|
||
确保API密钥已启用以下权限:
|
||
|
||
- ✅ **启用读取** - 必须启用
|
||
- ✅ **启用合约交易** - 必须启用(这是关键!)
|
||
- ❌ **启用提币** - **不要启用**(安全考虑)
|
||
|
||
### 权限设置步骤
|
||
1. 在API管理页面,点击你的API密钥
|
||
2. 在权限设置中,确保勾选:
|
||
- [x] 启用读取
|
||
- [x] 启用合约交易
|
||
- [ ] 启用提币(不要勾选)
|
||
|
||
## 3. 检查IP白名单设置
|
||
|
||
### 如果设置了IP限制
|
||
1. 在API管理页面查看 **IP访问限制**
|
||
2. 如果设置了IP白名单,需要添加当前服务器的IP地址
|
||
3. 或者选择 **无限制**(不推荐,安全性较低)
|
||
|
||
### 获取服务器IP
|
||
```bash
|
||
# 在服务器上执行
|
||
curl ifconfig.me
|
||
# 或
|
||
curl ipinfo.io/ip
|
||
```
|
||
|
||
## 4. 检查测试网/生产网配置
|
||
|
||
### 测试网 vs 生产网
|
||
- **测试网**:用于测试,不涉及真实资金
|
||
- **生产网**:真实交易环境
|
||
|
||
### 配置匹配
|
||
确保 `config.py` 中的配置与你的API密钥环境匹配:
|
||
|
||
```python
|
||
# 如果API密钥来自测试网
|
||
USE_TESTNET = True
|
||
|
||
# 如果API密钥来自生产网
|
||
USE_TESTNET = False
|
||
```
|
||
|
||
### 如何判断
|
||
- 测试网API密钥:在 [testnet.binancefuture.com](https://testnet.binancefuture.com) 创建
|
||
- 生产网API密钥:在 [www.binance.com](https://www.binance.com) 创建
|
||
|
||
## 5. 验证API密钥
|
||
|
||
### 测试连接
|
||
运行程序后,查看日志输出:
|
||
|
||
```
|
||
✓ 币安客户端连接成功 (测试网: False)
|
||
✓ API密钥权限验证通过
|
||
```
|
||
|
||
如果看到这些信息,说明API密钥配置正确。
|
||
|
||
## 6. 常见问题排查
|
||
|
||
### 问题1:连接成功但无法获取余额
|
||
**原因**:API密钥没有合约交易权限
|
||
**解决**:在币安API管理中启用"合约交易"权限
|
||
|
||
### 问题2:IP地址错误
|
||
**原因**:服务器IP不在白名单中
|
||
**解决**:添加服务器IP到白名单,或取消IP限制
|
||
|
||
### 问题3:测试网/生产网不匹配
|
||
**原因**:USE_TESTNET 配置与API密钥环境不一致
|
||
**解决**:检查并修改 config.py 中的 USE_TESTNET 设置
|
||
|
||
### 问题4:API密钥已过期
|
||
**原因**:API密钥设置了过期时间
|
||
**解决**:创建新的API密钥或延长过期时间
|
||
|
||
## 7. 安全建议
|
||
|
||
1. **不要启用提币权限** - 即使API密钥泄露,也无法提走资金
|
||
2. **使用IP白名单** - 限制API密钥只能从特定IP访问
|
||
3. **定期更换API密钥** - 建议每3-6个月更换一次
|
||
4. **不要在代码中硬编码密钥** - 使用环境变量
|
||
5. **不要将API密钥提交到Git** - 确保 .gitignore 包含 config.py
|
||
|
||
## 8. 测试网API密钥获取
|
||
|
||
### 步骤
|
||
1. 访问 [币安测试网](https://testnet.binancefuture.com)
|
||
2. 使用测试网账号登录(如果没有,先注册)
|
||
3. 进入 API管理 创建测试网API密钥
|
||
4. 在 config.py 中设置 `USE_TESTNET = True`
|
||
|
||
### 测试网特点
|
||
- 免费使用
|
||
- 虚拟资金
|
||
- 适合测试和开发
|
||
- 不影响真实账户
|
||
|
||
## 9. 生产网API密钥获取
|
||
|
||
### 步骤
|
||
1. 访问 [币安官网](https://www.binance.com)
|
||
2. 登录你的账户
|
||
3. 进入 **账户** → **API管理** → **创建API**
|
||
4. 选择权限:**启用读取** + **启用合约交易**
|
||
5. 设置IP白名单(推荐)
|
||
6. 在 config.py 中设置 `USE_TESTNET = False`
|
||
|
||
## 10. 验证配置
|
||
|
||
运行程序后,应该看到:
|
||
|
||
```
|
||
✓ 币安客户端连接成功 (测试网: False)
|
||
✓ API密钥权限验证通过
|
||
账户余额: 总余额 1000.00 USDT, 可用余额 1000.00 USDT
|
||
```
|
||
|
||
如果看到错误,请根据错误信息参考上述解决方案。
|