Open zcbm7008 opened 1 month ago
@Override public TokenResponse getAccessToken(String code) { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); MultiValueMap<String, String> params = generateRequestParams(code); HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(params, headers); ResponseEntity<TokenResponse> responseEntity = restTemplate.postForEntity(tokenUri, request, TokenResponse.class); return responseEntity.getBody(); }
EndPoint가 생성한 code를 받아 AccessToken을 가져옴.
public NaverUserResponse getOauthProfile(String accessToken) throws JsonProcessingException { HttpHeaders httpHeaders = createAccessHeaders(accessToken); HttpEntity<?> request = new HttpEntity<>(httpHeaders); ResponseEntity<String> response = restTemplate.exchange(NAVER_PROFILE_URL, HttpMethod.GET, request, String.class); checkStatusCode(response); return parseJsonToResponse(response.getBody()); }
받은 AccessToken을 사용하여 유저의 profile 정보 요청을 보냄.
private NaverUserResponse parseJsonToResponse(String json) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); JsonNode rootNode = objectMapper.readTree(json).path("response");; return objectMapper.treeToValue(rootNode, NaverUserResponse.class); }
정보 요청을 받아와서 UserResponse로 파싱함.
@Override public OAuthMemberRequest createOAuthMemberRequest(final TokenResponse tokenResponse) throws JsonProcessingException { NaverUserResponse naverUserResponse = getOauthProfile(tokenResponse.getAccess_token()); return new OAuthMemberRequest(naverUserResponse.getNickname(),naverUserResponse.getEmail(),naverUserResponse.getProfile_image()); }
OAuth 요청을 보내 유저 profile을 받고 Request를 생성해 Response로 리턴함.
code -> AccessCode를 받은 기능은 다른 클래스로 분리
트러블슈팅
Client가 너무 많은 기능을 수행중
EndPoint가 생성한 code를 받아 AccessToken을 가져옴.
받은 AccessToken을 사용하여 유저의 profile 정보 요청을 보냄.
정보 요청을 받아와서 UserResponse로 파싱함.
OAuth 요청을 보내 유저 profile을 받고 Request를 생성해 Response로 리턴함.
고려사항
code -> AccessCode를 받은 기능은 다른 클래스로 분리