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

如何构造正确的Riot API请求 解决调用返回403/401报错问题

报错根因

403 Forbidden和直接访问接口返回的401 Unauthorized都属于Riot API鉴权/配置类错误,和valorantpy库的基础逻辑无关,触发原因集中在三点:

  • 代码中KEY = 'key'为占位符,未替换为Riot开发者平台申请的有效API密钥。无效密钥发起请求时,库封装的鉴权头校验不通过会抛出403,直接裸访问接口因为缺失鉴权信息会返回401
  • 客户端初始化参数错配:欧洲区域的Valorant API不需要同时传入region="eu"和route="europe",重复传参会导致路由指向错误的集群,触发跨区域鉴权拦截
  • 所用API密钥未开通Valorant相关接口权限,或个人开发密钥已过期(普通个人开发密钥默认有效期24小时,过期后自动失效)
修复方案

按以下顺序排查调整即可解决:

  1. 替换有效密钥:登录Riot开发者平台,注册账号后申请个人开发密钥,复制完整密钥字符串替换代码中'key'占位符。如果需要长期使用,可提交正式产品密钥申请,个人开发密钥每天需要重新生成。
  2. 修正初始化参数:删除手动传入的route="europe"参数,valorantpy库会根据传入的region自动匹配对应服务路由,无需手动指定。
  3. 升级依赖版本:执行pip install --upgrade valorant升级到最新版库,避免旧版本存在的鉴权头拼接bug。
  4. 补充基础异常捕获,处理接口限流、对局数据为空的边界场景。
修正后可运行代码
import valorant

# 替换为你自己申请的有效Riot API密钥
KEY = "你的有效Riot开发密钥"
# 仅保留必要参数,欧洲区自动匹配对应路由
client = valorant.Client(KEY, locale="ru-RU", region="eu")

account = client.get_user_by_name("SGT ItsRazyHero#VCTRU")
match_history = account.matchlist().history
competitive_match = match_history.find(queueId="competitive")

if competitive_match is None:
    print("最近历史记录中无竞技模式对局!")
    exit(1)

match_detail = competitive_match.get()
for team in match_detail.teams:
    print(f"{team.teamId} 队伍成员段位:")
    team_players = match_detail.players.get_all(teamId=team.teamId)
    for player in team_players:
        print(f"\t{player.gameName} - {player.rank}")
注意事项
  • 浏览器直接访问接口链接返回401为正常现象:Riot所有API接口要求请求头必须携带X-Riot-Token: 你的密钥鉴权字段,浏览器直接访问不会自动携带该字段,必然返回未授权错误,不代表接口本身不可用。
  • 个人开发密钥有严格频率限制:默认阈值为每秒20次请求、每10分钟100次请求,短时间高频拉取数据会触发限流返回403,批量请求时需要加合理间隔。
  • 如果账号近期没有打过竞技模式对局,find方法会返回None,需要先确认账号最近确实有对应模式的对局记录再调试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:27:35