gpt4 book ai didi

javascript - JS如何通过oauth2获取discord账户数据

转载 作者:行者123 更新时间:2023-12-04 17:15:17 25 4
gpt4 key购买 nike

我正在为 discord 开发一个审核机器人,我正在尝试创建一个付费计划,因此我需要用户使用 oauth2 使用他们的 discord 帐户登录,以便我可以获取用户数据并知道哪个服务器有付费计划,chin。所以现在我刚刚创建了一个 oauth2 url 并为 https://bouncerbot.goatcode.it/index.html 设置了一个重定向
然后,在用户登录后,我有这个网址:https://bouncerbot.goatcode.it/index.html?code=nZauBH6wT0hxn8g8SsS1OwiDvN35nn&guild_id=872213710150713384&permissions=0所以现在我想要用户数据(个人资料图片、用户名等)我怎样才能得到它?

最佳答案

这绝对是一个 Oauth2 问题而不是一个 Discord 问题。这个答案将使用使用 node-fetch 的 JS 示例。库来发出 Web 请求,并假设您使用的是 express后端。
首先,您希望用户使用您的客户 ID 和 the identify scope 授权他们的帐户。 .当他们点击授权时,他们将被发送到您指定的重定向 URI(在本例中为 https://example.com/redirect)。
当他们被重定向时,会有一个 code他们登陆的 URL 上的 GET 参数,你应该把它发送到 Discord's token URL获取访问 token :

app.get('/redirect', async function (req, res) {
// Check their GET params to get the code
var code = req.query.code;

// Make our POST body
var body = {
'client_id': CLIENT_ID,
'client_secret': CLIENT_SECRET,
'grant_type': 'authorization_code',
'code': code,
'redirect_uri': 'https://example.com/redirect',
};

// POST that to Discord
var site = await fetch("https://discord.com/api/v9/oauth2/token", {
method: 'POST',
body: JSON.stringify(body),
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
});

// And parse the response
var response = await site.json();
var accessToken = response['access_token'];
res.send(`Access token: ${accessToken}`);
})
使用 Discord 响应中给出的访问 token ,您可以向 get the current user 发出 GET 请求。 ,使用 Authorization Bearer XXXXX 的标题(其中 XXXXX 是您的访问 token ):
var site = await fetch("https://discord.com/api/v9/users/@me", {
method: 'GET',
headers: {'Authorization': `Bearer ${accessToken}`}
});
var response = await site.json();
var username = response.username;
在不知道您使用哪些库的更多信息的情况下,我无法具体向您提供这些东西所需的信息,但这是一个不错的示例列表,以及您需要经过哪些过程才能获得所需的信息。

关于javascript - JS如何通过oauth2获取discord账户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68821591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com