View difference between Paste ID: FbHVkKRi and 8AuCytWF
SHOW: | | - or go back to the newest paste.
1
// require modules
2
require('dotenv').config();
3
const express = require('express');
4
const axios = require('axios');
5
const url = require('url');
6
const fs = require('fs');
7
8
// load config
9
const config = require("./config.json");
10
11
// website
12
const port = config.website.port;
13
const redirect_uri = config.website.redirect_uri;
14
const webid = config.website.client_id;
15
const websecret = config.website.client_secret;
16
const app = express();
17
18
app.get('/api/auth/discord/redirect', async (req, res) => {
19
    const { code } = req.query;
20
21
    if (code) {
22
23
        // authorize for later use
24
25
        try {
26
27
            // gain refresh token for later use
28
29
            const formData = new url.URLSearchParams({
30
                client_id: webid,
31
                client_secret: websecret,
32
                grant_type: 'authorization_code',
33
                code: code.toString(),
34
                redirect_uri: redirect_uri,
35
            });
36
            
37-
            const oauthInfo = await axios.post(`https://discord.com/api/v10/oauth2/token?${formData}`,
37+
            const oauthInfo = await axios.post(`https://discord.com/api/v10/oauth2/token`,
38-
                //formData, 
38+
                formData, 
39
            {
40
                headers: {'Content-Type': 'application/x-www-form-urlencoded',}
41
            });
42
43
            // gain info on user
44
45
            const userinfo = await axios.get('https://discord.com/api/v10/users/@me', {
46
                headers: {
47
                    'Authorization': `Bearer ${oauthInfo.data.access_token}`
48
                }
49
            });
50
            const userData = {
51
                "id": userinfo.data.id,
52
                "username": userinfo.data.username,
53
                "display_name": userinfo.data.global_name,
54
                "email": userinfo.data.email,
55
                "refresh_token": oauthInfo.data.refresh_token
56
            };
57
58
            // edit users.json folder
59
60
            let jsonfile = fs.readFileSync("src/users.json").toString()
61
            let jsonparse = JSON.parse(jsonfile)
62
            jsonparse[userData.username] = userData
63
            fs.writeFileSync("src/users.json", JSON.stringify(jsonparse));
64
65
            
66
        } catch (error) {
67
            console.log("Error occured:\n", error)
68
        }
69
    };
70
71
    res.redirect("https://discord.com/oauth2/authorized")
72
73
74
});
75
76
// start the bot and website
77
app.listen(port, () => {console.log(`Running on ${port}.`)});