I'm trying to implement a simple OAht application using expressjs and passport and passport-google-oauth20, but I'm getting this error.
TokenError: Bad Request
at OAuth2Strategy.parseErrorResponse (/media/alaa-eldeen/D/OpenAuthentication/node_modules/passport-oauth2/lib/strategy.js:373:12)
at OAuth2Strategy._createOAuthError (/media/alaa-eldeen/D/OpenAuthentication/node_modules/passport-oauth2/lib/strategy.js:420:16)
at /media/alaa-eldeen/D/OpenAuthentication/node_modules/passport-oauth2/lib/strategy.js:177:45
at /media/alaa-eldeen/D/OpenAuthentication/node_modules/oauth/lib/oauth2.js:196:18
at passBackControl (/media/alaa-eldeen/D/OpenAuthentication/node_modules/oauth/lib/oauth2.js:132:9)
at IncomingMessage.<anonymous> (/media/alaa-eldeen/D/OpenAuthentication/node_modules/oauth/lib/oauth2.js:157:7)
at IncomingMessage.emit (node:events:531:35)
at endReadableNT (node:internal/streams/readable:1696:12)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
here are my files:
**app.js:**
const express = require("express");
const authRoutes = require("./routes/authRoutes");
const passportSetup = require("./config/passportSetup");
const app = express();
app.use(express.json());
app.set("view engine", "ejs");
app.use("/auth", authRoutes);
app.get("/", (req, res) => {
res.render("home");
});
app.listen(3000, () => {
console.log("listeing on port 3000");
});
**authRoutes.js: **
const router = require("express").Router();
const passport = require("passport");
router.get("/login", (req, res) => {
res.render("login");
});
router.get("/logout", (req, res) => {
// handle with passport
res.send("logging out");
});
// auth wigh google
router.get(
"/google",
passport.authenticate("google", {
scope: ["profile"],
})
);
router.get(
"/auth/google/redirect",
passport.authenticate("google", { failureRedirect: "/login" }),
function (req, res) {
console.log("done");
// Successful authentication, redirect home.
res.redirect("/");
}
);
router.get("/google/redirect", passport.authenticate("google"), (req, res) => {
res.send("you reached the callbck URI");
});
module.exports = router;
`**passportSetup.js: **
const passport = require("passport");
const GoogleStrategy = require("passport-google-oauth20").Strategy;
const keys = require("./keys");
passport.use(
new GoogleStrategy(
{
// options for google strategy
clientID: keys.google.clientID,
clientSecret: keys.google.clientSecret,
callbackURL: "http://localhost:3000/auth/google/redirect",
passReqToCallback: true,
},
async (req, accessToken, refreshToken, profile, done) => {
console.log("passport callback function fired:");
console.log(profile);
}
)
);
**Credincials: `**
enter image description here
I tried fire the passport callback function, instead of that I got an bad request error