添加dm_channels.messages.write时Discord OAuth提示invalid_scope求助
Discord OAuth添加
dm_channels.messages.write出现invalid_scope错误的原因 问题场景
尝试在Discord OAuth授权URL中添加dm_channels.messages.write权限范围后,认证时返回错误:
?error=invalid_scope &error_description=The requested scope is invalid, unknown, or malformed.
移除该权限后流程可正常运行。
原因分析
dm_channels.messages.write 不属于Discord OAuth2的用户授权范围,它是Bot应用专属的权限,用于允许Bot发送私信消息,不能放在OAuth授权URL的scope参数中。
Discord的权限体系分为两类:
- OAuth授权范围:用于获取用户授权,获取用户的身份信息、服务器数据等(比如
identify、email、guilds这些),需要放在授权URL的scope里。 - Bot应用权限:用于赋予Bot执行特定操作的能力(比如发送消息、管理服务器等),这类权限需要在开发者门户的Bot配置页面开启,而非通过OAuth流程让用户授权。
解决办法
- 打开Discord开发者门户,进入你的应用页面
- 切换到「Bot」标签页,找到「Send Messages in DMs」权限(对应
dm_channels.messages.write)并开启 - 保持OAuth授权URL的
scope参数为原有的合法范围:
https://discord.com/oauth2/authorize ?client_id=<CLIENT_ID> &response_type=code &redirect_uri=<REDIRECT_URI> &scope=identify+email+guilds.members.read+guilds.join+guilds
内容的提问来源于stack exchange,提问作者Fez Vrasta
相关产品推荐
相关产品推荐

