使用Python Requests调用Discord API遇401未授权错误求助
你调用Discord API获取服务器列表正常,但执行拉小号进服务器的PUT请求时返回401,核心是两个接口的权限要求和调用规则有差异,以下是具体排查修复方向:
权限范围不匹配:获取服务器列表仅需
guilds权限,但拉人接口必须持有guilds.join权限。检查你的OAuth授权流程,确认授权时的scope参数包含guilds.join,如果没加,重新发起授权并补充该权限。服务器角色权限不足:持有令牌的主账号必须是目标服务器的管理员,或拥有管理成员和创建邀请的角色权限。登录Discord服务器,检查主账号的角色权限配置。
缺失必填请求体参数:该PUT接口要求在请求体中传入小号的OAuth访问令牌(
access_token字段),你的代码未传递这个参数,这是导致401的关键问题。修正后的代码示例:# Oauth.discord_api_url = "https://discord.com/api" # at = 主账号的有效访问令牌 headers = {"Authorization": f"Bearer {at}"} guildid = "目标服务器ID" userid = "小号用户ID" urlguildy = f"{Oauth.discord_api_url}/guilds/{guildid}/members/{userid}" # 传入小号的OAuth访问令牌 payload = {"access_token": "小号的访问令牌"} r = requests.put(url=urlguildy, headers=headers, json=payload).json()令牌有效性验证:虽然获取服务器列表正常,仍建议调用
/users/@me接口验证主账号令牌是否未过期、状态正常。
内容的提问来源于stack exchange,提问作者Nonam
相关产品推荐
相关产品推荐

