Discord API-随机的“无效代码”错误传回生成的OAuth2代码

问题描述 投票:0回答:1

我已经使用授权码授予类型成功地实现了Discord的OAuth2流到我的应用程序中。最终用户导航到我的机器人的Discord的OAuth2链接,授权其访问,然后Discord使用code查询字符串将其重定向回我的网站。然后,机器人通过查询Discord的API将此代码交换为访问令牌。有关此过程的文档可供参考here

但是,大约每50-100个向交换端点的请求,我收到一个403,错误invalid_grant和描述Invalid "code" in request.坦白地说,我不明白Discord系统刚刚提供的代码如何立即无效。同一用户可以再次完成该过程,第二次没有错误返回。

[出于绝望,我尝试在开发人员仪表板中的名为Requires OAuth2 Code Grant的选项上切换,看到它说“如果您的应用程序需要多个作用域”,但它没有任何效果。我还联系了Discord支持人员,后者选择使用“超出范围”的借口,不提供任何帮助。我也尝试了无尽的调试,但是每次出现的情况显然都是随机的。奇怪的是,我在网上找不到任何人遇到同样的问题。

以下是我使用superagent库在Node.js中发出的请求。它与文档相符,并且运行正常,除了响应是随机描述的错误之外。

superagent.post('https://discordapp.com/api/v6/oauth2/token')
  .type('x-www-form-urlencoded')
  .set('Content-Type', 'application/x-www-form-urlencoded')
  .send({
    client_id: process.env.BOT_ID,
    client_secret: process.env.BOT_SECRET,
    grant_type: 'authorization_code',
    code,
    redirect_uri: process.env.OAUTH2_REDIRECT_URI,
    scope: 'identify guilds.join',
  });

我可以确认所有变量都与它们的期望值匹配。 redirect_uri的值与使用的原始URL中的redirect_uri的值匹配。 code是通过OAuth2流返回的code查询字符串的值。

导致错误的我在做错什么(如果有的话?)>

我已经使用授权码授予类型成功地实现了Discord的OAuth2流到我的应用程序中。最终用户导航到我的机器人的Discord的OAuth2链接,授权其访问,然后...

oauth-2.0 discord
1个回答
0
投票

您是否使用OAuth2链接邀请您的漫游器访问服务器-拥有正确的权限?如果是这样,您是否在main.js文件中定义了令牌?即bot.login(“ YOUR_TOKEN_HERE”)我建议不要切换“需要OAuth2代码授权”,因为一开始做任何事情都是很痛苦的。请让我知道任何进展:)

© www.soinside.com 2019 - 2024. All rights reserved.