调用Riot API返回401 Unauthorized错误问题排查求助
问题根因
401错误来自URL查询参数的分隔符书写错误,和api_key、puuid的参数值本身无关:
- URL规范里,仅第一个查询参数前需要用
?标识查询串起始,后续追加的参数之间必须用&分隔。你在count=1后错误使用了?拼接api_key,会导致服务端解析参数时,把?api_key=xxx整体当成count参数的值,根本识别不到你传入的api_key,自然返回未授权错误。 - 你调用其他Riot接口能正常返回200,本质是那些接口的参数分隔符写对了,和当前问题不冲突。
修复方法
把URL中count=1后面的?替换为&即可,修正后的完整代码如下:
import fetch from 'node-fetch' const getMatchList = async () => { const puuid = 'XXXXXXXX' const api_key = 'XXXXXXX' const res = await fetch( `https://asia.api.riotgames.com/lol/match/v5/matches/by-puuid/${puuid}/ids?start=0&count=1&api_key=${api_key}` ) const myJson = await res.json() console.log(myJson) }
补充排查点
如果修改后仍有异常,可以按以下顺序快速核对:
- 确认使用的API密钥未过期,Riot个人开发密钥默认有效期为24小时,过期后需要到开发者后台重新生成
- 确认请求的路由域名和账号所属大区匹配,亚洲区账号使用
asia.api.riotgames.com域名是正确的,其他大区账号需要更换对应区域的路由域名 - 不要把
api_key拼接到URL路径段中,必须放在查询参数或者官方要求的请求头字段中传递
内容的提问来源于stack exchange,提问作者user17692924
相关产品推荐
相关产品推荐

