NodeJS Passport 사용해서 Google Login구현할때

조회수 855회
app.get('/auth/google/callback',   passport.authenticate('google'));

이렇게 하면 잘 작동을 하는데요.

로그 찍어보려고 이렇게 하면 에러를 뿜어냅니다.

app.get('/auth/google/callback', (req, res) => {
    console.dir( 'called' );
    passport.authenticate('google')(req,res);
});

UnhandledPromiseRejectionWarning: TypeError: next is not a function

이렇게 하면, 브라우저가 계속 구글 페이지에서 빙글빙글 돌기만 합니다.

app.get('/auth/google/callback', (req, res) => {
    console.dir( 'called' );
    passport.authenticate('google');
});
  1. 어떻게 해야 passport.authenticate('google');가 실행되기 직전에 log를 찍을 수 있을까요?
  2. 위의 코드는 무엇이 잘못된건가요?
  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 2번에 대해 먼저 답을 드리면... 공식 문서가 상정하는/제안하는 용법이 아니라서 그렇습니다. 일단 authenticate에 관한 Passport의 공식 문서를 보면 이런 말이 나오네요.

    authenticate()의 함수는 표준 Connect 미들웨어 형식이기 때문에, Express 웹앱에서 라우팅 미들웨어로 쓰기 편리합니다.

    그러면 Express의 app.get() 메소드에서 저걸 호출하는 앞뒤로 뭔가를 호출할 수 있는지 없는지를 보면 되겠죠. 이제 1번 질문에 답을 드리면, (공식 문서에 따르면) 이렇게 하시면 됩니다.

    app.get('/auth/google/callback',
        function (req, res) {
            console.dir('calling');
        },
        passport.authenticate('google'),
        function (req, res) {
            console.dir('called');
        }
    );
    
    • 저게 callback함수가 아니라, middleware였군요! 답변 감사드립니다. 알 수 없는 사용자 2018.10.9 21:58

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)