TokenError: Bad Request at OAuth2Strategy.parseErrorResponse

23 Views Asked by At

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

0

There are 0 best solutions below