Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // require modules
- require('dotenv').config();
- const express = require('express');
- const axios = require('axios');
- const url = require('url');
- const fs = require('fs');
- // load config
- const config = require("./config.json");
- // website
- const port = config.website.port;
- const redirect_uri = config.website.redirect_uri;
- const webid = config.website.client_id;
- const websecret = config.website.client_secret;
- const app = express();
- app.get('/api/auth/discord/redirect', async (req, res) => {
- const { code } = req.query;
- if (code) {
- // authorize for later use
- try {
- // gain refresh token for later use
- const formData = new url.URLSearchParams({
- client_id: webid,
- client_secret: websecret,
- grant_type: 'authorization_code',
- code: code.toString(),
- redirect_uri: redirect_uri,
- });
- const oauthInfo = await axios.post(`https://discord.com/api/v10/oauth2/token`,
- formData,
- {
- headers: {'Content-Type': 'application/x-www-form-urlencoded',}
- });
- // gain info on user
- const userinfo = await axios.get('https://discord.com/api/v10/users/@me', {
- headers: {
- 'Authorization': `Bearer ${oauthInfo.data.access_token}`
- }
- });
- const userData = {
- "id": userinfo.data.id,
- "username": userinfo.data.username,
- "display_name": userinfo.data.global_name,
- "email": userinfo.data.email,
- "refresh_token": oauthInfo.data.refresh_token
- };
- // edit users.json folder
- let jsonfile = fs.readFileSync("src/users.json").toString()
- let jsonparse = JSON.parse(jsonfile)
- jsonparse[userData.username] = userData
- fs.writeFileSync("src/users.json", JSON.stringify(jsonparse));
- } catch (error) {
- console.log("Error occured:\n", error)
- }
- };
- res.redirect("https://discord.com/oauth2/authorized")
- });
- // start the bot and website
- app.listen(port, () => {console.log(`Running on ${port}.`)});
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement