38 lines
1018 B
JavaScript
38 lines
1018 B
JavaScript
import express from "express";
|
|
import dotenv from "dotenv";
|
|
import fetch from "node-fetch";
|
|
dotenv.config({ path: "../.env" });
|
|
|
|
const app = express();
|
|
const port = 3001;
|
|
|
|
// Allow express to parse JSON bodies
|
|
app.use(express.json());
|
|
|
|
app.post("/api/token", async (req, res) => {
|
|
|
|
// Exchange the code for an access_token
|
|
const response = await fetch(`https://discord.com/api/oauth2/token`, {
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/x-www-form-urlencoded",
|
|
},
|
|
body: new URLSearchParams({
|
|
client_id: process.env.VITE_DISCORD_CLIENT_ID,
|
|
client_secret: process.env.DISCORD_CLIENT_SECRET,
|
|
grant_type: "authorization_code",
|
|
code: req.body.code,
|
|
}),
|
|
});
|
|
|
|
// Retrieve the access_token from the response
|
|
const { access_token } = await response.json();
|
|
|
|
// Return the access_token to our client as { access_token: "..."}
|
|
res.send({access_token});
|
|
});
|
|
|
|
app.listen(port, () => {
|
|
console.log(`Server listening at http://localhost:${port}`);
|
|
});
|