调用Discord API返回401错误 如何获取有效OAuth2 bearer token
Discord API 返回401无权限的解决方法
调用获取服务器频道列表接口报401,核心是鉴权凭证类型不匹配、凭证格式错误,或者权限没开,不需要绕复杂流程,按下面两种使用场景选对应方案即可:
方案1:使用Bot Token(自建脚本/机器人场景首选,流程最简单)
- 打开Discord开发者门户,进入你创建的对应Application
- 左侧菜单选择「Bot」栏目,点击「Reset Token」,复制生成的Token字符串(这个字符串不要泄露给任何人,否则他人可以直接控制你的Bot)
- 生成Bot邀请链接:在OAuth2→URL Generator中,勾选
bot作用域,下方权限勾选View Channels,用生成的链接把Bot邀请进你要获取频道列表的目标服务器 - 发起API请求时,请求头的鉴权字段必须严格按格式写:
Authorization: Bot 你复制的BotToken
注意:Bot这个前缀是必填的,90%的人漏写这个前缀直接塞Token就会返回401
方案2:使用OAuth2用户Token(需要代表普通用户账号操作的场景)
- 同样进入对应Application的OAuth2→URL Generator栏目
- 作用域勾选
identifyguildsguilds.channels.read,设置好你的回调地址 - 打开生成的授权链接,登录Discord账号完成授权,跳转后从回调地址的URL参数里拿到
code授权码 - 向Discord Token接口发POST请求,携带
client_id、client_secret、code、grant_type: authorization_code、redirect_uri参数,即可兑换到用户Bearer Token - 发起API请求时,请求头鉴权格式为:
Authorization: Bearer 你兑换到的用户Token,注意这里前缀是Bearer,和Bot场景的前缀不一样
常见踩坑点
不要把Application ID、Client Secret当Token用,这两个参数不能直接当鉴权凭证;也不要混淆Bot和Bearer两种前缀,前缀和Token类型不匹配一定会报401。
你之前发起的报错请求截图如下:
正确的请求示例(curl版本):
# 替换为你自己的服务器ID和对应Token curl -H "Authorization: Bot 你的BotToken" https://discord.com/api/v10/guilds/目标服务器ID/channels
内容的提问来源于stack exchange,提问作者Boudewijn
相关产品推荐
相关产品推荐

