passport-facebook을 사용하여 Facebook OAuth 인증을 구현해 보았습니다.
이전에 Node.js + Socket.io를 공부하면 Facebook 인증을 통해 채팅방에 액세스할 수 있는 앱을 만들었으므로 좀 더 슬림화하는 것을 동기 부여에 구현해 보았습니다.
덧붙여서 이전에 만든 앱에 관한 기사는 이하.
그런데 이번에 사용한 대표적인 패키지와 간단한 역할은 이런 느낌.
passport-facebook : OAuth 인증
익스프레스 : 웹 앱 구성 및 웹 서버
ejs 인증 전후에 View를 동적으로 전환
passport-facebook조차 설치하면 express 및 ejs와 같은 종속 패키지가 붙어 있습니다. 인증 플로우도 거의 설정 레벨로 만들 수 있습니다.
OAuth 인증 구현
passport-facebook example이 Express의 최소 구성 느낌으로 사용하기 쉽기 때문에 이것을 기반으로 만들었습니다.
폴더 구성
exapmles/login
|---public (정적 파일 위치)
|---views (els 위치)
|---app.js ←여기가 본 기사의 메인
|---package.json
이하, 인증계를 해 주는 스크립트로 재기록한 개소를 들겠습니다.
구현은 Heroku에 배포하는 전제로 하고 있습니다.
앱 ID 및 비밀
app.js
var FACEBOOK_APP_ID = "--insert-facebook-app-id-here--"
var FACEBOOK_APP_SECRET = "--insert-facebook-app-secret-here--";
facebook for developers 에서 앱을 등록하고 ID와 비밀번호를 발행하고 여기에 copipe이어도 좋고, 환경 변수로서 명령으로 입력도 있습니다.
이번에는 코드에 노출되지 않으므로 환경 변수를 사용합니다.
app.js
var FACEBOOK_APP_ID = process.env.FACEBOOK_APP_ID;
var FACEBOOK_APP_SECRET = process.env.FACEBOOK_APP_SECRET;
콜백 URL
app.js
passport.use(new FacebookStrategy({
clientID: FACEBOOK_APP_ID,
clientSecret: FACEBOOK_APP_SECRET,
callbackURL: "http://localhost:3000/auth/facebook/callback"
},
function(accessToken, refreshToken, profile, done) {
process.nextTick(function () {
return done(null, profile);
});
}
));
passport에 인증에 필요한 정보를 전달하는 곳에서 콜백 URL을 정의합니다.
콜백 URL도 Facebook for developers에서 설정됩니다.
로컬 개발 환경이면
http://localhost:3000
에서 OK. 프로덕션을 바라보면 상대 패스라도 좋다고 생각합니다.다만, 여기도 앞과 같이 환경 변수로 해 버립니다.
OR
로 개발 환경도 갈 수 있도록 하면 편리하다고 생각합니다.app.js
passport.use(new FacebookStrategy({
clientID: FACEBOOK_APP_ID,
clientSecret: FACEBOOK_APP_SECRET,
callbackURL: process.env.CALLBACK_URL || "http://localhost:3000/auth/facebook/callback"
},
function(accessToken, refreshToken, profile, done) {
process.nextTick(function () {
return done(null, profile);
});
}
));
포트
app.js
app.listen(3000);
포트는 3000 결정이 되어 있으므로, 이것도 환경 변수로.
socket.io를 사용하고 싶기 때문에 express 대신 http 모듈을 사용하여 createServer에서 포트를 지정합니다.
app.js
var server = require('http').createServer(app);
var port = process.env.PORT || 3000;
server.listen(port);
시작해보기(로컬)
여러가지 환경 변수 사용하고 있으므로, 이런 커멘드로 실행.
$ FACEBOOK_APP_ID=*** FACEBOOK_APP_SECRET=*** node app.js
실행 후
http://localhost:3000
에서 브라우저를 시작하여 확인할 수 있습니다.시작해보기 (Heroku)
배포는 GitHub를 통해. 여러가지 노출하고 싶지 않은 것은 환경 변수화하고 있으므로, GitHub 에서도 무섭지 않습니다.
Heroku에 로그인하여 만든 앱에 환경 변수를 설정합니다.
$ heroku login
$ heroku config:set FACEBOOK_APP_ID=***
$ heroku config:set FACEBOOK_APP_SECRET=***
$ heroku config:set process.env.CALLBACK_URL=***
그런 다음 Heroku에 배포하고 시작하면 작동합니다. 간단!
완성 된 것은 GitHub에 놓여 있기 때문에 부담없이 Fork 되어 복제하여 사용하십시오. ⭐︎받을 수 있으면 기뻐합니다.
Reference
이 문제에 관하여(passport-facebook을 사용하여 Facebook OAuth 인증을 구현해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ynunokawa/items/ae823d3d6d8a99066d21텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)