Facebook Authentication
//fb-passport를 사용하는 경우 라우트가 두번 진행된다.
app.get('/auth/facebook', passport.authenticate('facebook',{scope:'email'}));
app.get('/auth/facebook/callback',
passport.authenticate(
'facebook',
{ successRedirect: '/welcome',
failureRedirect: '/auth/login' })); passport.use(new FacebookStrategy({
clientID: 783930845805363,
clientSecret: bdcbfef6bdcbbd1042ff726301eebbd4,
callbackURL: "/auth/facebook/callback",
profileFields:['id','email','gender','link','locale','name','timezone','updated_time','verified','displayName']
},
function(accessToken, refreshToken, profile, done) {//profile정보를 이용해서 사용자를 찾아본다.
console.log(profile);
var authId = 'facebook:'+profile.id;
for(var i=0;i<users.length;i++){
var user = users[i];
if(user.authId === authId){//fb으로 로그인하면 authId가 있음.이미 존재하는 사용자라면.
return done(null,user);//이미 존재하면 사용자 객체를 리턴. 아래 사용자 새로 생성하는 것은 실행X.
}//done(null,user)에 의해 serializeUser가 실행된다.
}
var newuser = {
'authId':authId,
'displayName':profile.displayName,
'email':profile.emails[0].value
};
users.push(newuser);
done(null,newuser);
}
));Last updated