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
- 개발
- JavaScript
- 리액트
- react
- underscores
- Instantiation Patterns
- 공부
- 취업
- JS
- 알고리즘
- 제일어려워
- ftech
- 연습
- 코딩
- array
- 일상
- nqueens
- this
- 클라이언트
- 엔퀸즈
- 자바스크립트
- DOM
- 포스기
- vscode
- underbar
- 해커톤
- grpahQL
- method
- 코드스테이츠
- 초보
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