OAuth(OpenAuthorization)
서비스제공자가 다른서비스에게 데이터를제공하기위해 서비스 사용자에게 제공하는 사용자인증방식의 표준 프로토콜
passport-google-oauth20는 손쉽게 구글OAuth 2.0 을구현해주는 라이브러리
td(colspan="2"): a(href="/auth/google")
button(type="button") 구글 로그인
router.get('/google', passport.authenticate('google', { scope: ['profile', 'email'] }));
const GoogleStrategy = require('passport-google-oauth20').Strategy;
const config = {
clientID: 'clientID설정',
clientSecret: 'clientSecret설정',
callbackURL: "/auth/google/callback"
};
module.exports = new GoogleStrategy(config, async (accessToken, refreshToken, profile, done) => {
const { email, name } = profile._json;
console.log(profile)
// 생략...
});
서비스 제공자로부터 제공받는 정보를 프로필, 이메일로 제한해두었기 때문에 위와 같은 코드로 작성하였다.
3~7. 제공받은 페이지에서 로그인 성공 시 콜백함수의 파라미터로 사용자 프로필, accessToken, refreshToken등을 받아 이 후 서버에서 필요한 작업을 진행하면 된다.
new GoogleStrategy(config, async (accessToken, refreshToken, profile, done) => {
const { email, name } = profile._json;
console.log(profile);
console.log(accessToken);
// 이후 해당 정보들을 이용하여 DB에서 조회 후 유저를 찾아 세션 또는 토큰방식을 사용하여 인증 진행
});
만약 로그인이 실패된다면 다시 로그인 페이지로 이동된다.
app.get('/auth/google/callback',
passport.authenticate('google', { failureRedirect: '/login' }),
function(req, res) {
// Successful authentication, redirect home.
res.redirect('/');
});