从 Discord API 请求令牌时出现 400 错误

Posted

技术标签:

【中文标题】从 Discord API 请求令牌时出现 400 错误【英文标题】:400 Error when requesting a token from Discord API 【发布时间】:2021-03-22 01:41:35 【问题描述】:

我正在尝试使用 Discord 的 API 创建登录过程。根据文档,我假设使用回调 URL 上返回的 code 进行另一个调用以接收访问令牌。我已经按照here 的说明进行操作。但是,我在拨打电话时不断收到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】:

经过进一步研究,我发现了以下video 帮助了我。

这是工作代码:

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;
);

【讨论】:

以上是关于从 Discord API 请求令牌时出现 400 错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Express.js 上使用 Axios 向 Spotify API 发出 POST 请求时出现错误 400

尝试请求令牌时出现 Twitter API 错误

SyntaxError:在 Heroku 上托管 Discord 机器人时出现意外的令牌 '??='

HttpError 400:访问 Google Extended Trends API for Health 时出现错误请求

SharePoint REST API。在 SharePoint 列表上进行 AJAX 调用时出现 400 错误请求

通过 Retrofit 调用发布请求时出现 400 bad request 错误