无法在Google oauth之后在heroku上设置cookie,在本地是否可以正常使用?

时间:2018-10-18 05:49:11

标签: javascript node.js heroku oauth

我尝试将google oauth集成到我的节点应用程序中。相同的东西在本地服务器上运行时,heroku服务器上未设置cookie。

passport.js

passport.serializeUser((user, done) => {

  done(null, user.id);
});

passport.deserializeUser((id, done) => {
  User.findById(id).then(user => {
    done(null, user);
  });
});

passport.use(
  new GoogleStrategy(
    {
      clientID: keys.googleClientID,
      clientSecret: keys.googleClientSecret,
      callbackURL: '/auth/google/callback',
      proxy: true
    },
    async (accessToken, refreshToken, profile, done) => {
      const existingUser = await User.findOne({ googleId: profile.id });

      if (existingUser) {
        return done(null, existingUser);
      }

      const user = await new User({ googleId: profile.id }).save();
      done(null, user);
    }
  )
);

RouteFile.js

在这里,我得到的req.user在oauth流之后与local和heroku相同。但是在heroku中,它没有设置cookie。

  app.get(
    '/auth/google/callback',
    passport.authenticate('google'),
    (req, res) => {
      console.log(req.user);
      res.redirect('/dashboard');
    }
  );

index.js

cookie设置。相同的东西在本地工作,但在heroku服务器上不工作

const app = express();

app.use(bodyParser.json());
app.use(
  cookieSession({
    //name: 'session',
    maxAge: 30 * 24 * 60 * 60 * 1000,
    keys: [keys.cookieKey],
    //secure: true,
    //httpOnly : false
  })
);

0 个答案:

没有答案