Discord OAuth2 从确切的公会获取用户角色

Posted

技术标签:

【中文标题】Discord OAuth2 从确切的公会获取用户角色【英文标题】:Discord OAuth2 getting user roles from exact guild 【发布时间】:2021-11-29 18:31:21 【问题描述】:

我正在使用 discord OAuth2 进行 chrome 扩展身份验证。我得到用户access_token 并想用它来获取我服务器上实际用户的角色。我尝试使用https://discordapp.com/api/v6/users/@me/https://discordapp.com/api/v6/users/@me/guilds,但它只提供有关用户服务器的信息。我还可以获取有关此用户角色的信息吗?我该怎么做?

【问题讨论】:

不太确定但试试discordapp.com/api/v6/guilds/<guild_id>/members/… @MalikLahlou 我试过但只有401: Unauthorized ,我认为这个是为机器人准备的 你用的是什么示波器? @NotTrixxie 身份和公会 【参考方案1】:

要获取有关用户所在的公会和用户所在角色的信息,您可能需要查看 Discord 的文档。我不能 100% 确定您是否可以通过 OAuth2 获得有关用户角色的信息,但这是我发现的。

guilds 作用域返回部分公会信息

允许 /users/@me/guilds 返回有关用户所有公会的基本信息

如文档中所说(上面引用),它返回基本信息,这可能不包括用户的角色,但只包括所有公会角色,而不是用户拥有的角色。


  "id": "80351110224678912",
  "name": "1337 Krew",
  "icon": "8342729096ea3675442027381ff50dfe",
  "owner": true,
  "permissions": "36953089",
  "features": ["COMMUNITY", "NEWS"]

不确定guilds 范围是否返回比full guild structure 更多的信息

我建议回显/记录您从该范围获得的信息。

【讨论】:

我就是这样做的,这就是我写这个问题的原因:)【参考方案2】:

不确定这是否会有所帮助,但此链接包含有关如何通过 oath2 和请求信息获取公会中的用户列表、搜索用户或获取有关特定用户的更多信息的官方不和谐文档从端点。 Official Discord (get-guild-member)

值得注意的是,我个人使用GET 请求/guilds/guild.id/members 来获取该帐户所属的公会内的用户列表。

我相信这会返回服务器中的角色以及列表,或者如果不包括在内,您可以获取 id 并搜索具有该 id 的用户,或者从@987654324 请求更多信息@ 以获取尽可能多的关于公会内某个用户的 discord 信息。

另外值得注意的是,我遇到了同样的 401:未授权错误。解决此问题的方法是确保您的 discord 应用程序中列出了正确的成员和公会意图。

【讨论】:

【参考方案3】:

您可以通过/users/@me/guilds/guild.id/member API 使用guilds.members.read 范围和OAuth2 访问角色ids,但不要认为您可以获得实际的角色对象。我想我可以打电话给/guilds/guild.id/roles 来获取角色列表并解析id,但是这个thread 表明它只对机器人可用,而不是OAuth2

编辑: 在我忙于弄清楚如何解析 role_ids 时,我发现您可以在 Discord Message 输入表单中使用快捷方式 &lt;@&amp;[role_id]&gt; 来找出 role_id 实际指的角色的名称。

【讨论】:

/users/@me/guilds/guild.id/member - 这对我来说非常有效。谢谢!

以上是关于Discord OAuth2 从确切的公会获取用户角色的主要内容,如果未能解决你的问题,请参考以下文章

Python Discord OAuth2 - Guild.Join(加入公会)

获取当前用户公会 Discord

使用 oauth2 从 Discord API 获取信息

如何获取大型公会 discord.js 的所有成员

如何获取公会 Discord.js 中的成员列表

Discord 使用 php curl 获取公会成员列表