You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Binance API错误(-2015)求助:已尝试多种方案仍无法解决

解决Binance API Error -2015: Invalid API-key, IP, or permissions for action 的额外排查点

以下是容易被忽略的排查方向,你可以逐一验证:

  • 检查IP白名单的准确性:
    别想当然认为IP正确,去Binance API管理后台,把当前运行代码机器的公网出口IP添加到白名单里。如果用了VPN、代理或者公司内网,实际请求的IP可能不是你本地机器的IP,用curl https://api.ipify.org查下真实出口IP再核对。

  • 确认API权限的细节:
    client.get_account()需要的是「Read Spot & Margin Data」权限,哪怕你开了交易权限,没开这个读取权限也会触发报错。去API页面仔细核对权限列表,确保这个读取权限已勾选。

  • 排查密钥的复制问题:
    很多人复制secret key时会不小心带了换行符或者首尾空格,建议把代码里的api_key和secret_key临时打印出来(测试完立刻删除!),和Binance后台显示的密钥逐字符对比,确保完全一致。

  • 检查API的状态:
    去Binance后台确认你用的这个API是「Active」状态,有没有被禁用或者冻结。如果创建过多个API,别搞混了用了旧的失效密钥。

  • 调整网络和TLD设置:
    用tld="com"时如果网络访问不稳定,会导致请求无法正确传递密钥,触发权限报错。可以试试改成tld="cn"(针对国内用户),先测试能否正常访问https://api.binance.com/api/v3/time,看返回是否是正常的时间戳。

  • 修复时间同步问题:
    Binance API对请求时间戳的偏差要求严格,超过500ms就会报错。你可以在代码里先对比本地时间和服务器时间:

import time
from binance.client import Client
from binance.exceptions import BinanceAPIException

client = Client(api_key=api_key, api_secret=secret_key, tld="com", recvWindow=60000)
# 对比服务器时间和本地时间
server_time = client.get_server_time()['serverTime']
local_time = int(time.time() * 1000)
time_diff = abs(server_time - local_time)
print(f"时间差: {time_diff}ms")

if time_diff > 500:
    print("本地时间与服务器时间偏差过大,请同步系统时间")
else:
    try:
        account = client.get_account()
        print("账户信息获取成功")
    except BinanceAPIException as e:
        print(f"报错: {e}")

如果时间偏差太大,手动同步系统时间,或者调大recvWindow参数(最大不超过60000)。

内容的提问来源于stack exchange,提问作者sanemdogan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 17:52:25