Как получить аватар из discord API?

#javascript #node.js #express #oauth-2.0 #avatar

#javascript #node.js #выражать #oauth-2.0 #аватар

Вопрос:

Я спрашиваю, как я могу получить аватар пользователя, который авторизовался с помощью OAuth2.

https://cdn.discordapp.com/avatars/781264468998488095/ XXXXXXXXXXXXXXXXXXX ?size=128

Первый — это идентификатор клиента, не мог бы кто-нибудь объяснить, что может скрываться за «/»?

Или как я могу загрузить из api Текстовый
текст

Ответ №1:

Информация, предоставляемая вам в ответе Discord OAuth2, включает идентификатор аватара:

{id: ‘537355342313422849’, имя пользователя: ‘Зрелище’, аватар: ‘1ee4375beb131ae43a4e4b81e267a265’, дискриминатор: ‘1738’, public_flags: 64, …}

Это то, что идет в URL после идентификатора клиента.

Пример:

https://cdn.discordapp.com/avatars/537355342313422849/1ee4375beb131ae43a4e4b81e267a265

И, конечно, вы можете добавить спецификации для размера.

Ответ №2:

 const { get, post } = require("snekfetch");
const express = require("express");
const btoa = require("btoa");
const app = express();

const cfg = {
    id: "****",
    secret: "*****",
};

app.get("/", (req, res) => {
    console.log(req.query.code);
    res.status(200).json({ status: "ok" });
    get(`https://discord.com/users/{id}`)
        .then((response) => {
            console.log(response);
            res.send(response);
        })
        .catch(console.error);
});

app.get("/dc", (req, res) => {
    res.redirect(
        [
            "https://discordapp.com/oauth2/authorize",
            `?client_id=${cfg.id}`,
            "amp;scope=identify guilds",
            "amp;response_type=code",
            `amp;callback_uri=http://localhost:8080/authorize`,
        ].join("")
    );
});

app.get("/authorize", (req, res) => {
    const code = req.query.code;
    const cred = btoa(`${cfg.id}:${cfg.secret}`);
    post(
        `https://discordapp.com/api/oauth2/token?grant_type=authorization_codeamp;code=${code}`
    )
        .set("Authorization", `Basic ${cred}`)
        .then((response) =>
            res.redirect(`/guilds?token=${response.body.access_token}`)
        )
        .catch(console.error);
});

app.get("/guilds", (req, res) => {
    get("https://discordapp.com/api/v6/users/@me/guilds")
        .set("Authorization", `Bearer ${req.query.token}`)
        .then((response) => res.json(response.body))
        .catch(console.error);
});

app.listen(8080, () => console.log("Ready"));