尝试使用 Discord 的 oauth2 时出现“invalid_grant”错误
Posted
技术标签:
【中文标题】尝试使用 Discord 的 oauth2 时出现“invalid_grant”错误【英文标题】:"invalid_grant" error while trying to use Discord's oauth2 【发布时间】:2021-04-11 18:12:13 【问题描述】:const response = await fetch(`https://discordapp.com/api/oauth2/token`,
method: "POST",
headers:
"Content-Type": "application/x-www-form-urlencoded",
,
body: JSON.stringify(
client_id: process.env.CLIENT_ID,
client_secret: process.env.CLIENT_SECRET,
redirect_uri: redirectURL,
grant_type: 'authorization_code',
code: code,
),
);
当我运行上面的代码时,它返回 error: 'invalid_grant'
,我不知道为什么。有什么解决办法吗?谢谢。
【问题讨论】:
【参考方案1】:您是否还需要按照文档发送范围参数:
const data =
client_id: 'your client id',
client_secret: 'your client secret',
grant_type: 'authorization_code',
redirect_uri: 'your redirect uri',
code: accessCode,
scope: 'the scopes',
;
fetch('https://discord.com/api/oauth2/token',
method: 'POST',
body: new URLSearchParams(data),
headers:
'Content-Type': 'application/x-www-form-urlencoded',
,
)
.then(res => res.json())
.then(console.log);
您需要将您的正文作为 URLSearchParams(data) 发送。
您还需要在代码顶部添加以下内容:
const fetch = require('node-fetch');
检查这个新链接:
https://discordjs.guide/oauth2/#oauth2-flows
【讨论】:
我通过了范围,但仍然无济于事。 sourceb.in/PRFno2AVqi 和之前一样的错误, error: 'invalid_grant'
我修复了它,我所要做的就是使用查询字符串而不是 JSON。【参考方案2】:
我修复了它,我所要做的就是使用 querystring
而不是 JSON。
【讨论】:
以上是关于尝试使用 Discord 的 oauth2 时出现“invalid_grant”错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 discord.py 获取不和谐服务器中所有成员的列表时出现问题