본문 바로가기
IT/web

Node.js] 구글 패스포트로 사용자 인증

by 깻잎쌈 2020. 2. 10.
반응형
 

Google Cloud Platform

하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요.

accounts.google.com

여기서 사용자 인증 정보를 만들고 

클라이언트 ID, Secret을 발급받는다.

리디렉션 URL 설정 


구글 Stragety를 설정.

config/passport/google.js

var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
var config = require('../config');

module.exports = function(app, passport) {
	return new GoogleStrategy({
    	clientID: config.google.clientID,
    	clientSecret: config.google.clientSecret,
    	callbackURL: config.google.callbackURL
	}, function(accessToken, refreshToken, profile, done) {
		console.log('passport의 google 호출됨.');
		console.dir(profile);
		console.log('///////////////////');
		var options = {
		    criteria: { 'google.id': profile.id }
		};
		
		var database = app.get('database');
	    database.userModel.findOne(options, function (err, user) {
			if (err) {console.log(err.stack); return done(err);}
      
			if (!user) {
				var user = new database.userModel({
					name: profile.displayName,
			  //      email: profile.emails[0].value,
                    id : profile.id,
			        provider: 'google',
			        google: profile._json
				});
        
				user.save(function (err) {
					if (err) console.log(err);
					return done(err, user);
				});
			} else {
				return done(err, user);
			}
	    });
	});
};

 

config/config.js

module.exports = {
    
 ...
    google: {		
		clientID: 'your ID',
		clientSecret: 'your Secret',
		callbackURL: '/auth/google/callback'
	}
}

 

 

라우팅 설정

routes/user_passport.js

//구글 패스포트 
router.route('/auth/google').get(passport.authenticate('google',{
     scope : 'profile'
}));
    
router.route('/auth/google/callback').get(passport.authenticate('google',{
     successRedirect : '/profile',
     failureRedirect : '/'
}));

 

반응형

댓글