Discord Oauth2 加入公会

Discord Oauth2 Join Guild

const guildMembersResponse = fetch(`http://discordapp.com/api/guilds/440494010595803136/members/278628366213709824`,
            {
              method: 'PUT',
              headers: {
                Authorization: `Bearer TOKEN`,
              },
            });
            setTimeout(() => {
                console.log(guildMembersResponse)
            }, 500);

我想使用他在 nodejs 中的用户 ID 和令牌将用户加入我的 Discord 服务器,但是如果我请求 Dicord api 我收到错误消息:

Promise {
 Response {
  size: 0,
  timeout: 0,
  [Symbol(Body internals)]: { body: [PassThrough], disturbed: false, error: 
  null },
  [Symbol(Response internals)]:
  { url:
  'https://discordapp.com/api/guilds/440494010595803136/members/278628366213709824',
   status: 401,
   statusText: 'UNAUTHORIZED',
   headers: [Headers] } } }

I am using the node-fetch library!

401 错误意味着您没有为 oauth link 提供正确的范围。在 https://discordapp.com/developers/docs/topics/oauth2#shared-resources-oauth2-scopes 阅读更多关于 Discord 的 OAuth 范围的信息。引用文档,您需要 guilds.join 范围。

此外,文档引用:

guilds.join and bot require you to have a bot account linked to your application. Also, in order to add a user to a guild, your bot has to already belong to that guild.

因此请确保您的应用满足上述要求。

如果您确定已按照上述步骤操作,但仍然无法正常工作,则必须与我们共享 OAuth link 以帮助您进一步调查

我只需要将 headers 中的“ContentType”替换为“Content-Type”!

headers: {
  "Authorization": "Bot [botToken]",
  "Content-Type": "application/json",
}

您应该将用户令牌添加到正文中, 像这样:

{
  method: 'PUT',
  access_token: "Bearer TOKEN"
  headers: {
    Authorization: `Bot TOKEN`,
}

用户令牌应该是这样的:TiaRZjWv5YAp80MpTFRkhi1GhXqddB

我为让它工作所做的一件事是使用 Discord 的 REST。不幸的是,这份文件准备得非常差。

const { REST } = require('@discordjs/rest');

const rest = new REST({ version: '10' }).setToken('TOKEN');

rest.put(`/guilds/${guildID}/members/${userID}`, {
    body: {
        'access_token': accessToken
    }
})