250217 포트폴리오 프로젝트(31)

geenee·2025년 2월 17일
0

Portfolio

목록 보기
37/38

마지막으로 코드 정리 한번 하고..!

카카오 토큰 갱신하기

router.get("/tokencheck", async (req, res) => {
  const result = {
    code: "",
    message: "",
  };

  if (req.session.is_logined && req.session.type === "social_kakao") {
    try {
      // 카카오 토큰 정보 보기 (6시간)
      const tokeninfo = await axios.get(
        `https://kapi.kakao.com/v1/user/access_token_info`,
        {
          headers: {
            Authorization: `Bearer ${req.session.access_token}`,
          },
        }
      );

      // 10분 남았을 때 토큰 갱신
      if (tokeninfo.data.expires_in <= 600) {
        const KAKAO_OAUTH_TOKEN_API_URL = "https://kauth.kakao.com/oauth/token";
        const KAKAO_GRANT_TYPE = "refresh_token";
        const KAKAO_CLIENT_id = process.env.REACT_APP_KAKAO_RESTAPI_KEY;

        // 카카오 로그인 유저 토큰 요청
        const response = await axios.post(
          `${KAKAO_OAUTH_TOKEN_API_URL}?grant_type=${KAKAO_GRANT_TYPE}&client_id=${KAKAO_CLIENT_id}&refresh_token=${req.session.refresh_token}`,
          {
            headers: {
              "Content-type": "application/x-www-form-urlencoded;charset=utf-8",
            },
          }
        );

        const access_token = response.data.access_token;

        result.code = "success";
        result.message = "토큰 재발급 성공";

        req.session.access_token = access_token;
        req.session.save();
      }
    } catch (e) {
      console.log(e);
      res.send(e);
    }
  }

  res.send(result);
});

토큰 정보로 유효기간을 확인하여 10분 이내일때 토큰 갱신 요청
토큰 갱신은 이런식으로 테스트 해봤고 페이지에 딱히 적용은 안함
토큰을 계속 확인하고 유효기간이 지나면 로그아웃 되게 하려고 했는데.. 복잡시러서 그냥 안함..ㅋ

카카오 토큰을 사용자 정보를 가져올때랑 로그아웃할때만 써서 다른 요청에 딱히 쓰일일이 없음
지금은 로그인 세션에 유효기간이 딱히 없어서리........
토큰이 만료 되어도....사이트를 이용하는데는 문제가 없음(?)
그래서 그냥 api 확인만 해보고 사이트에 적용은 안함

내일은 EC2에 배포하고 페이지 동작 확인하고 포폴 만들어야지🥲

profile
코딩 공부 기록용

0개의 댓글