24.02.21

서린·2024년 2월 21일

혼자개발

목록 보기
50/82

response를 getBody로 다시 요청을 해보면

return "카카오 토큰요청 완료 : 토큰 요청에 대한 응답 :" + response.getBody();

accessToken을 정확하게 볼 수 있다

@Controller
@RequestMapping("/kakao")
public class KakaoController {
	
	@ResponseBody
	@GetMapping("/callback")
	public String kakaoCallback(String code) { //data를 리턴해주는 컨트롤러 함수
		
		//생략
		
		//Gson, Json Simple, ObjectMapper 라이브러리 
		ObjectMapper objectMapper = new ObjectMapper();
		OAuthToken oauthToken = null;
		
		try {
			oauthToken = objectMapper.readValue(response.getBody(), OAuthToken.class);
		} catch (JsonMappingException e) {
			e.printStackTrace();
		} catch (JsonProcessingException e) {
			e.printStackTrace();
		}
		
		System.out.println("카카오 엑세스 토큰: " + oauthToken.getAccess_token());
		
		return response.getBody();
		
	}

accessToken이 console에도 잘 찍히는것을 볼 수 있다
이제 이걸 가지고
사용자 정보 요청을 해야한다

원래 나눠서 작성하는것이 좋지만
현재 헷갈리는 상황에서는 한곳에서 보는게 더 이해가 잘 될거같아 아래에 이어서 작성했다

@Controller
@RequestMapping("/kakao")
public class KakaoController {
	
	@ResponseBody
	@GetMapping("/callback")
	public String kakaoCallback(String code) { //data를 리턴해주는 컨트롤러 함수
		
		//생략
		
		//토큰을 이용해서 사용자 정보 조회 
		RestTemplate rt2 = new RestTemplate();
		
		//HttpHeader 오브젝트 생성
		HttpHeaders headers2 = new HttpHeaders();
		headers2.add("Authorization", "Bearer " + oauthToken.getAccess_token());
		headers2.add("Content-type", "application/x-www-form-urlencoded;charset=utf-8");
		
		//HttpHeader 와 HttpBody를 하나의 오브젝트에 담기
		HttpEntity<MultiValueMap<String, String>> kakaoProfileRequest2 = 
				new HttpEntity<>(headers2);
		
		//Http요청하기 - Post 방식으로-그리고 response 변수의 응답 받음
		ResponseEntity<String> response2 = rt2.exchange(
			"https://kapi.kakao.com/v2/user/me",
			HttpMethod.POST,
			kakaoProfileRequest2,
			String.class
		);
		
		
		return response2.getBody();
		
	}

0개의 댓글