Задать вопрос
@zaralX
Я человек, я упал с луны.

Как сделать автоматическую авторизацию на сайте через Discord?

Есть 2 готовых страницы сайта.

На первом человек нажимает на кнопку и после чего попав на страницу авторизации дискорда проходит её
62d15ddf312b1504297321.png

Далее сайт получив на сколько я знаю одноразовый код через который сайт индетифицирует человека и прогружает его данные (в моём случае ник)
62d15ebf0aabc850838712.png

Но вот проблема!
При перезагрузке страницы подключение сбрасывает и кидает на авторизацию (Это я лично сам добавил иначе просто ни ника нифига нету)

Я нашёл что-то в гугле и там это через 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);
  • Вопрос задан
  • 216 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@zaralX Автор вопроса
Я человек, я упал с луны.
Реализовано через CURL запрос в PHP
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы