diff --git a/.gitignore b/.gitignore index 06bc1e7..f46de59 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ node_modules -.DS_Store \ No newline at end of file +.DS_Store + +.env \ No newline at end of file diff --git a/app.js b/app.js index f022d72..f1e7c7b 100644 --- a/app.js +++ b/app.js @@ -1,8 +1,14 @@ const express = require("express"); +const pageRouter = require("./routes/page") +const authRouter = require("./routes/auth") + const app = express(); app.set("port", process.env.PORT || 3000); +app.use("/", pageRouter); +app.use("/auth", authRouter); + app.listen(app.get("port"), () => { console.log(app.get("port"), "node start!"); }); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9fdfb21..af90e12 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "ISC", "dependencies": { "axios": "^1.4.0", + "dotenv": "^16.3.1", "express": "^4.18.2" } }, @@ -164,6 +165,17 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", diff --git a/package.json b/package.json index d57bebd..5a95c1e 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "license": "ISC", "dependencies": { "axios": "^1.4.0", + "dotenv": "^16.3.1", "express": "^4.18.2" } } diff --git a/routes/auth.js b/routes/auth.js new file mode 100644 index 0000000..602e5cd --- /dev/null +++ b/routes/auth.js @@ -0,0 +1,38 @@ +require("dotenv").config(); +const express = require("express"); +const axios = require("axios"); +const router = express.Router(); + +const env = process.env; + +router.get("/", (req, res) => { + res.redirect( + `https://github.com/login/oauth/authorize?client_id=${ env.CLIENT_ID }` + ); +}); + +router.get("/github/callback", (req, res) => { + axios + .post( + "https://github.com/login/oauth/access_token", + { + client_id: env.CLIENT_ID, + client_secret: env.CLIENT_SECRET, + code: req.query.code, + }, + { + headers: { + Accept: "application/json", + }, + } + ) + .then((result) => { + console.log(result.data.access_token); + res.send("you are authorized " + result.data.access_token); + }) + .catch((err) => { + console.log(err); + }); +}); + +module.exports = router; diff --git a/routes/page.js b/routes/page.js new file mode 100644 index 0000000..64997e8 --- /dev/null +++ b/routes/page.js @@ -0,0 +1,8 @@ +const express = require('express'); +const router = express.Router(); + +router.get('/', (req, res) => { + res.send("hello"); +}); + +module.exports = router; \ No newline at end of file