생략된 부분이 많습니다. 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를 사용하기위한 인증 키를 발급받습니다.
그리고 발급받은 앱 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) {
});
}
));
'STUDY > Node.js' 카테고리의 다른 글
Node.js | Passport.js (passport - kakao) (1) | 2020.01.21 |
---|---|
Node.js | multer를 이용한 파일 업로드 (input type='file') (0) | 2020.01.19 |
Node.js | Passport.js (passport-local) + MySQL (4) | 2020.01.10 |
Node.js | Session 알아보기(express-session) (0) | 2020.01.08 |
Node.js | 쿠키(cookie) 알아보기 (쿠키를 이용한 ID저장하기) (1) | 2020.01.06 |