본문 바로가기

Programming!

Node.JS / Google OAuth2 작업중 이슈.

passport.serializeUser(function(user, done) {
  done(null, user);
});
passport.deserializeUser(function(obj, done) {
  done(null, obj);
});
passport.use(new GoogleStrategy({
      clientID:     GOOGLE_CLIENT_ID,
      clientSecret: GOOGLE_CLIENT_SECRET,
      callbackURL: GOOGLE_CALL_BACK,
      passReqToCallback   : true
    },
    function(request, accessToken, refreshToken, profile, done) {
      process.nextTick(function () {
        return done(null, profile);
      });
    }
));
app.get('/auth/google/login', passport.authenticate('google', { session: false, scope: [
    'email', 'profile'],
}));

app.get('/auth/google/login-process',
    passport.authenticate( 'google', {
      failureRedirect: '/auth/google/login',
    }),  function (req, res) {
        return res.redirect("/");
      
    }
);
app.get('/auth/google/logout', function(req, res){
  req.logout();
  res.redirect("/");
});

처음으로 Node.JS를 만지작 거리며 회사에서 google oauth를 붙이게 됨.

npm passport google oauth를 이용하여 붙이는 중 logout을 하면 자동으로 다시 login이 되는 현상이 발생.

쿠키나 세션문제로 인지하고 주구장창 그쪽만 파봄.. 수시간이 흐르고 짜증이 날때 즈음 우리 스택오버플로우 형님께서 알려주신 

'prompt: 'select_account' 옵션을 붙임.

app.get('/auth/google/login', passport.authenticate('google', { session: false, scope: [
    'email', 'profile'], prompt: 'select_account'
}));

잘됨. 아주 잘됨...

 

진짜 처리하는 방법은 알게뭐냐!!! 된다!!! 끗