본문 바로가기

STUDY/Node.js

Node.js | Passport.js (passport-facebook)

생략된 부분이 많습니다. passport를 전혀 모른다면 이전 글(passport-local)을 꼭 보고오세요.

 

 

1. passport-facebook 설치

 

$ npm install passport-facebook

 

 

 

2. 사용을 위한 준비

 

미들웨어를 불러옵니다. 만약 다른 전략들과 함께 사용한다면 passport따로 strategy따로 선언해주세요.

var passport = require('passport')
  , FacebookStrategy = require('passport-facebook').Strategy;

 

이제 https://developers.facebook.com/ 에서 API를 사용하기위한 인증 키를 발급받습니다.

 

Facebook로그인을 클릭해주세요
자신의 상황과 맞는 것을 선택해주세요
왼쪽의 사이드바에서 기본 설정 클릭
앱 ID와 앱 시크릿 코드를 발급받았습니다.

 

 

그리고 발급받은 앱 ID와 시크릿 코드를 적용합니다.

callbackURL은 이 인증과정이 처리 된 후 실행할 route 주소를 적어줍니다.

passport.use(new FacebookStrategy({
    clientID: FACEBOOK_APP_ID,
    clientSecret: FACEBOOK_APP_SECRET,
    callbackURL: "http://www.example.com/auth/facebook/callback"
  },
  function(accessToken, refreshToken, profile, done) {
   	
    });
  }
));

 

당연히 serializeUser와 deserializeUser메서드는 필요합니다. 이전글을 참고하세요.

 

 

 

 

3. Route 작성

 

// app.js

// 이 경로로 오면 facebook로그인을 위한 창이 생성됩니다.
app.get('/auth/facebook', passport.authenticate('facebook'));


// 로그인을 마치면 이 경로로 오게됩니다.
app.get('/auth/facebook/callback',
  passport.authenticate('facebook', { successRedirect: '/',
                                      failureRedirect: '/login' }));

 

끝입니다! passport-local보다 쉬운 느낌입니다.

passport에서 어려운 부분을 모두 처리해주어서 굉장히 편리하게 사용할 수 있습니다.

 

 

 

+) 이메일 정보 받아오기

route에 scope를 추가합니다.

app.get('/auth/facebook', passport.authenticate('facebook', {scope:'email'})));

 

그리고 passport-facebook 인증이 진행되는 곳에도 추가해줍니다.

profile을 콘솔에 출력해보면 email이 추가된 것을 확인하실 수 있을겁니다.

passport.use(new FacebookStrategy({
    clientID: FACEBOOK_APP_ID,
    clientSecret: FACEBOOK_APP_SECRET,
    callbackURL: "http://www.example.com/auth/facebook/callback",
    profileFields: ['id', 'displayName', 'emails']
  },
  function(accessToken, refreshToken, profile, done) {
   	
    });
  }
));

 

 

 

 

Documentation: Facebook

Facebook The Facebook strategy allows users to log in to a web application using their Facebook account. Internally, Facebook authentication works using OAuth 2.0. Support for Facebook is implemented by the passport-facebook module. Install $ npm install p

www.passportjs.org