개발하고 싶은 초심자

3-3. 220607 소셜 로그인을 위한 클라이언트와 서버 연결(2), 마이페이지 에러 잡기 본문

Project in Codestates/Final Project

3-3. 220607 소셜 로그인을 위한 클라이언트와 서버 연결(2), 마이페이지 에러 잡기

정새얀 2022. 6. 7. 10:57

1. 서버에서 토큰 받아오기

토큰을 받아오고 카카오 로그인을 한 사용자의 정보를 받아오는 것 까지는 되는데 데이터베이스에 저장이 되지 않으면서 결과적으로는 제대로 로그인이 되지 않는 것 같아 보였다.

 

처음 썼던 코드에서는 

const { userEmail, profile } = kakaoUserInfo.data.kakao_account;
const userInfo = await users.findOne({
  where: { userEmail }
});
if(!userInfo) {
  const newUserInfo = await users.create({
    userEmail: userEmail,
    userName: profile.nickname
  });
}

findOne과 create메소드를 사용하여 하나씩 단계를 밟아나갔는데 이 부분에서 제대로 넘어가지도 않고 하나로 묶을 수 있을 것 같아 findOrCreate메소드로 코드를 변경했다.

데이터베이스에 카카오로 로그인한 사용자를 구분해주기 위해 kakaoId 컬럼에 데이터가 저장되도록 만들었다.

그랬더니 코드가 정상 작동되면서 소셜 로그인에 성공할 수 있었다.

 

2. 마이페이지에서 userId undefined 에러 고치기

클라이언트에서 로그인 후 마이페이지에 들어가면 userId값이 undefined로 뜨면서 서버 연결이 끊기는 에러가 발견됐다.

아예 코드를 바꿔서 작성해봤다.

// 원래 작성했던 코드
const { userName } = req.query;
const uploads = await posts.findAll({
  attributes: ['title', 'content', 'image'],
  include: [
    {
      model: users,
    },
  ],
  where: { userName },
  order: [['createdAt']],
});

새로 작성한 코드는 .then((data)) => {} 안에 map을 활용하여 회원정보를 받아오는 방식으로 해결했다.

 

Comments