Notice
														
												
											
												
												
													Recent Posts
													
											
												
												
													Recent Comments
													
											
												
												
													Link
													
											
									| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 | 
| 12 | 13 | 14 | 15 | 16 | 17 | 18 | 
| 19 | 20 | 21 | 22 | 23 | 24 | 25 | 
| 26 | 27 | 28 | 29 | 30 | 31 | 
													Tags
													
											
												
												- nqueens
- 취업
- JS
- 제일어려워
- grpahQL
- 코딩
- Instantiation Patterns
- 자바스크립트
- JavaScript
- 코드스테이츠
- 클라이언트
- underbar
- 알고리즘
- 개발
- ftech
- method
- 포스기
- DOM
- 리액트
- underscores
- 공부
- array
- react
- 연습
- 해커톤
- 초보
- 일상
- this
- 엔퀸즈
- vscode
													Archives
													
											
												
												- Today
- Total
analogcoding
PASSPORT 카카오 (KaKao)2 본문
console.log 로 카카오로 부터 profile 객체를 전달 받는 것 까지 성공한 뒤 데이터를 확인해서 회원가입 , 로그인 상태 구현하기.
const kakaoSign = async (req, res) => {
  // login 에서는 받은  profile 을  DB 랑 비교한당  req.user = profile
  const { user } = req;
  const nickName = user.username;
  const email = user.id;
  const { provider } = user;
  console.log("provider-->", req.provider);
  return User.findOne({
    where: { email, nickName, admin: false, provider }
  })
    .then(data => {
      if (data) {
        console.log("data is case old-->", data);
        const token = createJWT({ id: data.id, nickName: data.nickName });
        res.send({
          isLogin: true,
          user: data,
          err: null,
          token
        });
        return;
      }
      return User.create({
        email,
        nickName,
        admin: false,
        provider
      }).then(newdata => {
        console.log("newdata is case new-->", newdata);
        const token = createJWT({
          id: newdata.id,
          nickName: newdata.nickName
        });
        res.send({
          isLogin: true,
          user: newdata,
          err: null,
          token
        });
      });
    })
    .catch(err => console.log(err));
};
profile 객체로 넘어온 정보를 DB 에서 findOne 으로 찾아서 그 data 가 존재한다면 토큰과 함께 리소스를 res.send 로 전달하고,
존재하지 않는다면 create 로 DB 에 profile 로 넘어온 newdata 를 저장한 뒤 , 리소스를 전달한다.
passport 도큐먼트나 다른 분들의 예제를 보면서 왜 findOrCreate 를 쓸까? 나는 로그인 따로 회원가입 따로 사용하고 싶은데
라는 의문이 들었는데 물론 해결할 수 있는 여러 방법이 있었겠지만 porfile 이 넘어오는 callbackURL 이 하나라서
따로 분기를 제대로 주지 못해서 결국 findOrCreate 를 사용했다. ( 물론 내 낮은 리딩능력 때문에 따로 따로..)
data 에 유무에 따라 분기를 나누고 에러처리를 해서 무사히 카카오에서 받아온 정보를 client 에서 활용할 수 있게
res.send 로 전송 성공!
'Be well coding > Learn more' 카테고리의 다른 글
| Apollo Cache (0) | 2019.08.08 | 
|---|---|
| Kakao MAP 사용하기 (0) | 2019.08.08 | 
| PASSPORT 카카오 (KaKao) (0) | 2019.07.30 | 
| JWT in graphQL (1) | 2019.07.28 | 
| Sequelize (0) | 2019.07.27 | 
			  Comments
			
		
	
               
           
					
					
					
					
					
					
				 
								