Google Login Passport problem with cookie

44 Views Asked by At

I implemented the google login with passport in the following way but I get this error: Set-Cookie header is ignored in response from url..etc.. The combined size of the name and value must be less than or equal to 4096 characters.

This is the code

Passport.js

const GoogleStrategy = require("passport-google-oauth20").Strategy;
const passport = require("passport");
const CLIENT_ID =
  "";
const CLIENT_SECRET = "";
passport.use(
  new GoogleStrategy(
    {
      clientID: CLIENT_ID,
      clientSecret: CLIENT_SECRET,
      callbackURL: "/api/auth/google/callback",
    },
    function (accessToken, refreshToken, profile, done) {
      done(null, profile);
    }
  )
);

passport.serializeUser((user, done) => {
  done(null, user);
});

passport.deserializeUser((user, done) => {
  done(null, user);
});

Auth.js

const router = require("express").Router();
const passport = require("passport");

router.get("/login/success", (req, res) => {
  if (req.user) {
    res.status(200).json({
      error: false,
      message: "Successfully Loged In",
      user: req.user,
      cookies: req.cookies,
    });
  } else {
    res.status(403).json({ error: true, message: "Not Authorized" });
  }
});

router.get("/login/failed", (req, res) => {
  res.status(401).json({
    error: true,
    message: "Log in failure",
  });
});

router.get("/google", passport.authenticate("google", { scope: ["profile"] }));

router.get(
  "/google/callback",
  passport.authenticate("google", {
    successRedirect: `${process.env.CLIENT_URL}home`,
    failureRedirect: "/login/failed",
  })
);

router.get("/logout", (req, res) => {
  req.logout();
  res.redirect(process.env.CLIENT_URL);
});

module.exports = router;

index.js

const express = require("express");
const cors = require("cors");
const app = express();
const port = 5000;
const bodyParser = require("body-parser");
require("dotenv").config();


require("dotenv").config();
const passport = require("passport");
const cookieSession = require("cookie-session");
const passportStrategy = require("./googleauth/passport");

app.use(
  cookieSession({
    name: "session",
    keys: ["chiavecookie"],
    maxAge: 24 * 60 * 60 * 100,
  })
);

app.use(
  cors({
    origin: "http://localhost:3000",
    methods: "GET,POST,PUT,DELETE",
    credentials: true,
  })
);

app.use(bodyParser.json());
app.use(passport.initialize());
app.use(passport.session());

const authRoute = require("./googleauth/auth");

app.use("/api/auth", authRoute);

app.listen(port, () => {
  console.log(`Server started on port ${port}`);
});

module.exports = app;

LoginPage.js (Frontend)

import React, { useState, useEffect } from "react";
import NavBar from "../../Shared/Components/Navbar/Navbar";
import TextComponent from "../../Shared/Components/TextComponent";
import MainNavigation from "../../Shared/Pages/MainNavigation";

const LoginPage = (props) => {

  const googleAuth = () => {
    window.open("http://localhost:5000/api/auth/google", "_self");
  };

    return (
      <React.Fragment>
        <NavBar />
        <TextComponent titolo={"Login"} />
        <div className="center">
          <button onClick={googleAuth}>Login</button>
        </div>
      </React.Fragment>
    );
};

export default LoginPage;

I cleaned the cookies and downloaded working versions of code from the web but those don't work either

0

There are 0 best solutions below