node.js 유용한 모듈 (14) - everyauth
원문 링크 - http://www.catonmat.net/blog/nodejs-modules-everyauth/
9회 연재 - redis (redis 클라이언트 라이브러리)
10회 연재 - express (경량의 고속 웹 프레임워크)
12회 연재 - cradle (고수준 CouchDB 클라이언트)
13회 연재 - JSONStream (스트리밍 JSON 파서)
오늘 소개할 모듈은 Brian Noguchi가 만든 everyauth다. everyauth는 connect 모듈의 미들웨어로 사용되며 페이스북, 트위터, 구글 등과 같은 서비스의 인증을 처리하기 위하 사용된다.
다음은 이 모듈을 통해 로그인 처리를 할 수 있는 사이트 목록이다.
Everyauth supports a plenty of sites.
모듈을 사용하기 위해서는 다음과 같이 connect에서의 미들웨어 설정을 한다.
var everyauth = require('everyauth');
var connect = require('connect');
var app = connect(everyauth.middleware());
그리고 인증 처리를 할 서비스들의 비밀키를 다음과 같이 config.json
에 구성한다.
module.exports = {
fb: {
appId: '111565172259433'
, appSecret: '85f7e0a0cc804886180b887c1f04a3c1'
},
twit: {
consumerKey: 'JLCGyLzuOK1BjnKPKGyQ'
, consumerSecret: 'GNqKfPqtzOcsCtFbGTMqinoATHvBcy1nzCTimeA9M0'
},
github: {
appId: '11932f2b6d05d2a5fa18'
, appSecret: '2603d1bc663b74d6732500c1e9ad05b0f4013593'
},
// ...
};
그런 다음 여러분이 사용하려는 서비스의 로그인을 수행하는 코드를 작성한다. (아래 코드는 페이스북 로그인 예제다)
var conf = require('./config.json');
var usersByFbId = {};
everyauth
.facebook
.appId(conf.fb.appId)
.appSecret(conf.fb.appSecret)
.findOrCreateUser(function (session, accessToken, accessTokenExtra, fbUserMetadata) {
return usersByFbId[fbUserMetadata.id] ||
(usersByFbId[fbUserMetadata.id] = addUser('facebook', fbUserMetadata));
})
.redirectPath('/');
everyauth
모듈은 npm을 통해 설치할 수 있다.
npm install everyauth
EveryAuth의 GitHub 사이트: https://github.com/bnoguchi/everyauth.