Ошибка 400 при запросе токена из Discord API

#node.js #discord #fetch #discord.js #http-status-code-400

#node.js #Discord #выборка #discord.js #http-status-code-400

Вопрос:

Я пытаюсь создать процесс входа в систему с помощью Discord API. Согласно документации, я предполагаю использовать code возвращаемый URL-адрес обратного вызова, чтобы выполнить другой вызов для получения токена доступа. Я следовал инструкциям здесь. Тем не менее, я продолжаю получать 400 сообщение об ошибке при выполнении вызова.

Любая помощь в том, что мне нужно исправить?

 let options = {
  method: 'POST',
  headers: {
    'Authorization': 'Basic '   discordInfo.client_id   ":"   discordInfo.client_secret,
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  data: {
    'client_id': discordInfo.client_id,
    'client_secret': discordInfo.client_secret,
    'grant_type': 'authorization_code',
    'code': req.query.code,
    'redirect_uri': discordInfo.callbackUrl,
    'scope': 'identify email'
  }
}

let discord_data = await fetch('https://discord.com/api/oauth2/token', options).then((response) => {
  if (response.status >= 400) {
    throw new Error("Bad response from server");
  }
  return response.json();
}).then((response) => {
  console.log('Discord Response', response);
}).catch((error) => {
  console.log(error);
});
 

Ответ №1:

После дальнейших исследований я обнаружил следующее видео, которое помогло мне.

Вот рабочий код:

 let options = {
  url: 'https://discord.com/api/oauth2/token',
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  body: new URLSearchParams({
    'client_id': discordInfo.client_id,
    'client_secret': discordInfo.client_secret,
    'grant_type': 'client_credentials',
    'code': req.query.code,
    'redirect_uri': discordInfo.callbackUrl,
    'scope': 'identify email'
  })
}

let discord_data = await fetch('https://discord.com/api/oauth2/token', options).then((response) => {
  return response.json();
}).then((response) => {
  return response;
});