프로젝트

서버 배포 후 카카오 로그인 먹통현상..

정코딩딩 2024. 8. 1. 02:20

서버 배포는 성공적으로 마쳐서, 로컬에서는 제대로 돌아가길래 이제 머지 후 테스트를 해볼 때 갑자기 잘 되던 json 반환에 문제가 생기기 시작했따...

리다이렉트 주소도 여러번 확인하고, securityConfig 에 주소를 안열어둔건지, 서버가 죽은건지, 도커 이미지가 업데이트가 안되는건지,,, 계속 계속 확인했는데, 모든게 다 정상인데 403 에러가 뜨는 문제가 발생했다...

 

403 에러면 권한이 없다는건데 그래서 securityConfig 에 문제가 있나 싶어 한참을 들여다봤다.

 

터미널로 도커 로그를 살펴보니까 CLIENT_ID 에 대한 환경변수 주입이 안되었다고해서, 이 부분도 무한번 수정했다... 그래도 오류에 변화는 없었다..!! (후에 보니까 환경변수 주입 부분은 application.yml 에 넣어둔 경로를 잘못 설정해준 탓인것 같았다.)

 

그런데, 리다이렉트 주소를 확인하던 중, 내가 코드상에서 넣어서 보내고있던 리다이렉트 주소는 하드코딩으로 localhost 를 사용하고 있었다!!

private String getAccessToken(String code){
        log.info("[Loginservice.kakaoLogin.getAccessToken]");
        RestTemplate restTemplate = new RestTemplate();

        UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("https://kauth.kakao.com/oauth/token")
                .queryParam("grant_type", "authorization_code")
                .queryParam("client_id", clientId)
                .queryParam("redirect_uri", redirectUri)
                .queryParam("code", code);

        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

        HttpEntity<String> entity = new HttpEntity<>(headers);

        ResponseEntity<String> response = restTemplate.exchange(
                builder.toUriString(),
                HttpMethod.POST,
                entity,
                String.class
        );
        log.info(response.getBody());
        JSONObject jsonObject = new JSONObject(response.getBody());
        return jsonObject.getString("access_token"); // access_token 값만 반환
    }

 

이 코드에서 지금은 redirectUri 라고 적혀진 .queryParam 쪽의 부분이다. 카카오 디벨로퍼에도, url 창에도 전부 배포된 서버 주소를 넣어두고 하필! 이 부분에만 localhost 로 유지하고 있었던...;; 그래서 자꾸 접근이 안됐다고 했었나보다

그리고 하드코딩된 줄 몰랐는데 너무 적나라한 값으로 들어가있는 것도 확인해서 yml 파일안에 예쁘게 담아두었다!! 

 

저렇게 수정하고나서 코드를 다시 돌려보니, 아주 잘 Json 으로 반환된 것을 확인했따!!

혹시나 나처럼 로컬에선 돌아가는데,, 배포된 서버로 확인이 안된다면,, 저런 부분을 살펴보길..