Есть 2 готовых страницы сайта.
На первом человек нажимает на кнопку и после чего попав на страницу авторизации дискорда проходит её
Далее сайт получив
на сколько я знаю одноразовый код через который сайт индетифицирует человека и прогружает его данные (в моём случае ник)
Но вот проблема!
При перезагрузке страницы подключение сбрасывает и кидает на авторизацию (Это я лично сам добавил иначе просто ни ника нифига нету)
Я нашёл что-то в гугле и там это через Map делали но я не особо понял как оно работает :(
const { Console } = require("console");
const { response } = require("express");
const express = require("express");
const unirest = require("unirest");
const { request } = require("http");
const { allowedNodeEnvironmentFlags } = require("process");
const app = express();
const port = 1000;
const path = require("path");
app.use('/static', express.static('static'));
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
console.log(__dirname);
app.use('/static', express.static(path.join(__dirname, 'static')));
var logged = new Map();
var name;
app.get("/", (request, response) => {
if (request.query.code) {
let clientId = "988380114112872469";
let redirect_uri = "http://localhost:1000/";
let clientSecret = ""; // скрыт
let requestPayload = {redirect_uri, client_id: clientId, grant_type: "authorization_code", client_secret: clientSecret, code: request.query.code};
unirest.post("https://discordapp.com/api/oauth2/token").send(requestPayload).headers({"Content-Type": 'application/x-www-form-urlencoded', "User-Agent": 'DiscordBot'})
.then((data) => {
unirest.get("https://discordapp.com/api/users/@me").headers({"Authorization": `${data.body.token_type} ${data.body.access_token}`})
.then(data => {
console.log("New authorized user - " + data.body.username);
logged.set(request.ip, data.body.id);
var name = data.body.name;
if (data.body.username) { // если данные актуальны
response.render('index_logged.ejs', { name: data.body.username }); // загружаем страницу передав переменные
} else {
response.render("index.ejs");
}
})
.catch((err) => {
response.render("index.ejs");
})
})
.catch((err) => {
response.render("index.ejs");
})
}
else {
response.render("index.ejs");
}
});
app.listen(port);
console.log("APP STARTED ON PORT " + port);