'Passport OAuth2 strategy / facebook strategy is loosing user

I am trying to authorize a pre logged in user with a Facebook account. I want to store the auth token of Facebook to later post stuff using my CMS.

I am using Express/NodeJS and Passport JS.

My FacebookStrategy looks like this:

module.exports = new FacebookStrategy(
  {
    clientID,
    clientSecret,
    callbackURL: `${config.apiUrl}/v1/auth/connect/facebook/callback`, 
    passReqToCallback: true
  },
  async function(req, token, tokenSecret, profile, done) {
    console.log("SESSION?", req.session)
    console.log("THIS SHOULD BE SET!", req.user) // But is not!

    // Stuff is done.

    done(null, token, {savedConnectionForLaterUse});
  }

I also have two routes:

router.get('/connect/facebook',
  API_KEY_OR_JWT_AUTH_MIDDLEWARE,
  (req, res, next) => {
    // Save authInfo in session
    Object.assign(req.session, {account: req.authInfo.account._id, user: req.user._id})
    
    passport.authorize('facebookConnect', { 
      failureRedirect: `${frontUrl}/settings/connections`, 
      scope: facebookOAuthScopes, // This is an array of scopes I need 
    })(req, res, next)
  },
);

router.get('/connect/facebook/callback',
  passport.authorize('facebookConnect', {
    failureRedirect: `${apiUrl}/v1/auth/connect/facebook/failure`,
  }),
  (req, res) => {
    const { session: {connection} } = req;

    res.redirect(`${frontUrl}/settings/connections/edit/${connection}`);
  }
);

When I am running this on my local machine it works due to the fact that the session is there and in the session I can find my user for later use. As soon as I am deploying this on a server (with kubernetes) the session is gone.

The configuration of the express session looks like this:

app.use(
    expressSession({
        secret: config.security.secret,
        resave: true,
        saveUninitialized: true,
        cookie: {
            sameSite: 'none', // This was something I tried.. didn't help thou
            secure: true,
        },
    })
)

Can anyone point me into the right direction? What am I doing wrong?

Thank you all for your help in advance. I am really at the end of my knowledge. The struggle is real! :D



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source