node.js 소셜 로그인 연동( naver )
반응형

안녕하세요. Lotts 입니다. 👏

node.js 프로젝트에 소셜 로그인 기능을 연동해 보겠습니다.

NAVER 기준입니다.  😄

 

Naver 뿐만아니라 kakao, google, github 등 다양하게 있습니다.

 

필수 npm을 설치합니다.

npm install passport
npm install passport-naver --save

 

 passport 참조 사이트입니다

 

Passport.js

Simple, unobtrusive authentication for Node.js

www.passportjs.org

 

 

네이버 아이디로 로그인' 기능을 사용하기전에

Naver Developers 에서 '네아로' API를 등록

 

네이버 아이디로 로그인

 

네이버 아이디로 로그인 소개

네이버 아이디로 로그인 별도의 아이디, 비밀번호없이 네이버 아이디로 간편하게 외부 서비스에 로그인 할 수 있도록 하는 서비스입니다. 이용자는 복잡하고 번거로운 회원 가입 절차 없이 편하게 서비스를 이용하고, 사업자는 회원 가입, 로그인에 대한 허들을 낮춰 회원수...

developers.naver.com

 

✅ app.js

var passport = require('passport');

app.use(passport.initialize());

app.use(passport.session());

✅ login.js

var passport = require('passport'); //passport 추가

var NaverStrategy = require('passport-naver').Strategy;
router.get('/naver',passport.authenticate('naver',null),function(req, res) {

     console.log("/main/naver");

});

 

//처리 후 callback 처리 부분 성공/실패 시 리다이렉트 설정

router.get('/naver/callback', passport.authenticate('naver', {

    successRedirect: '/',

    failureRedirect: '/main/login'

  })

 );

 

//별도 config 파일에 '네아로'에 신청한 정보 입력

passport.use(new NaverStrategy({

    clientID: config.authLogin.naver.client_id,

    clientSecret: config.authLogin.naver.secret_id,

    callbackURL: config.authLogin.naver.callback_url

},

function(accessToken, refreshToken, profile, done) {

    process.nextTick(function () {

        var user = {

            name: profile.displayName,

            email: profile.emails[0].value,

            username: profile.displayName,

            provider: 'naver',

            naver: profile._json

        };

        console.log("user=");

        console.log(user);

     

        return done(null, user);

     });

     }

));

//failed to serialize user into session 에러 발생 시 아래의 내용을 추가 한다.

passport.serializeUser(function(user, done) {

    done(null, user);

});

passport.deserializeUser(function(req, user, done) {

     

     // passport로 로그인 처리 후 해당 정보를 session에 담는다.

     req.session.sid = user.name;

     console.log("Session Check :" +req.session.sid);

    done(null, user);

});

 

상세한 소스는 git에 올렸습니다. 😊

Lotts github 보러가기

 

연동한 웹 화면입니다 👏👏

네이버 로그인을 클릭하시면

네아로와 연동되어 정상적으로 아래와 같은 화면이 나오게 됩니다

🤘🤘🤘

네이버 아이디로 로그인

 

반응형