inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

카카오로 로그인하기

passport-naver

해결된 질문

813

작성자 없음

작성한 질문수 0

0

passport-naver을 이용해보려 하는데 

porfile.displayName 값이 계속 undefind여서 nick값에 들어가지가 않습니다... 

naver 앱등록할때 권한도 다 설정 해줬는데 왜 정보를 받아오지 못할까요 제로초님 ㅠㅠ 

const passport = require('passport');
const NaverStrategy = require('passport-naver').Strategy;

const User = require('../models/user');

module.exports = () => {
    passport.use(new NaverStrategy ({
        clientID: process.env.NAVER_ID, // 네이버에서 발급받을 ID
        clientSecret: process.env.NAVER_SECRET,
        callbackURL: '/auth/naver/callback', // 네이버로부터 인증결과를 받을 라우터 주소
    }, async (accessToken, refreshRoken, response, done) => {  // 네[이버에서 인증 후 Token 과 profile을 보내준다.
        console.log('naver profile', response);
        try {
            const exUser = await User.findOne({     // 기존의 User가 있는지 조회
                where: { snsId: response.id, provider: 'naver' },
            });
            if(exUser) {   // 기존 User의 정보가 있다면 User정보를 done과 호출하고 전략을 종료
                done(null, exUser);
            } else {  // 기존의 User정보가 없다면 회원가입을 진행
                const newUser = await User.create({
                    
                    email:  response.emails[0].value,
                    nick: response.id,
                    snsId: response.id,
                    provider: 'naver',
                    naver: response._json
                });
                done(null, newUser); // 사용자 생성 후 done함수 호출
            }
        } catch (error) {
            console.log(error);
            done(error);
        }
    }));
};

이렇게 작성했습니다 

naver profile {

  provider: 'naver',

  id: '60727489',

  displayName: undefined,

  emails: [ { value: 'juren528@gmail.com' } ],

  _json: {

    email: 'juren528@gmail.com',

    nickname: undefined,

    profile_image: undefined,

    age: undefined,

    birthday: undefined,

    id: '60727489'

  }

}

가져온 결과 콘솔로 확인해보니 이렇게 나오구요

좀더 공부해보려다 안되서 막막합니다 ㅠㅠ 

혹시 이유를 아실까요 ㅠㅠ

nodejs mysql mongodb Sequelize

답변 3

0

Han N

제가 로그인 할때 정보제공 동의 창이 안뜨고 로그인을 자동으로 진행했더니 정보가 안넘어 왔습니다 혹시 몰라 다른 아이디 등록해서 로그인 진행하니까 동의 창 뜨길래 동의 하고 로그인 진행했더니 정상적으로 넘어옵니다

답변 감사합니다  ㅎㅎㅎ

0

Han N

여기서 체크 했습니다. 네이버 계정에 이름 이메일 별명 기본정보는 있는데 정보를 가져오지 못하네요 ㅠ

0

제로초(조현영)

혹시 네이버 로그인 시도할 때 고객 입장에서 제공할 정보 체크하는 것 추가로 있는데 거기서 이메일 외의 것도 추가하셨나요? 그리고 반대로 네이버에 저런 정보가 들어있나요?

리눅스 노드 설치시 패키지

0

159

0

socket.js 에서 referer로부터 roomId를 가져올 때

0

905

3

스트리밍 방식으로 대용량 파일 업로드 & 다운로드 관련 질문

0

2281

2

a[title] 질문드립니다

0

375

1

리뉴얼 강의 및 공부 방법

0

581

1

jwt decode

0

1128

1

node.js 교과서 3판 질문드립니다

0

391

1

passport와 jwt

0

432

1

리뉴얼 강의

0

418

2

혹시 Node.js 교과서 3판 이북은 언제 나오나요?

0

353

1

몽고디비 사용자도 MYSQL부분을 들어야 하나요???

0

481

1

sql 쿼리 로그는 어떤 모듈이 작성하나요?

0

505

2

nunjucks res.render('error'); 작동을 안합니다.

0

511

1

질문있습니다.

0

346

1

multer 한글 파일 업로드시 파일명이 깨져요.

1

3535

1

수업자료는 어디있나요?

0

366

1

질문 있습니디

0

235

1

multer 사용시 file 외 name값은 못받나용?

0

416

1

코드 중복 부분 질문드립니다.

0

298

1

api 만드는 이유 질문드립니다.

0

286

1

Strategy의 done에 대해 질문드립니다.

0

364

1

안녕하세요 fs 권한 관련 질문드립니다

0

448

1

시퀄라이즈 연결질문...

0

495

2

res.setHeader vs res.cookie

0

1786

3