https://kauth.kakao.com/oauth/token
구글링해가며 허용IP 등록도 해보고 client_secret 설정도 열어서 값 추가했다가 플랫폼에 도메인등록도 했다가
다 해봤는데 안되네요. APP ID 는 867900 입니다.
https://kauth.kakao.com/oauth/token
구글링해가며 허용IP 등록도 해보고 client_secret 설정도 열어서 값 추가했다가 플랫폼에 도메인등록도 했다가
다 해봤는데 안되네요. APP ID 는 867900 입니다.
설정문제가 아니라 호출 시, 헤더가 전송안되는 것으로 보입니다.
관련 코드 블럭 공유해주시겠어요?
@PostMapping("/auth/kakao/accessToken")
@ResponseBody
public String getKakaoAccessToken(@RequestBody Map<String, String> paramMap) throws MalformedURLException, JsonProcessingException {
String code = paramMap.get("code");
String GOOGLE_TOKEN_REQUEST_URL = "https://kauth.kakao.com/oauth/token";
RestTemplate restTemplate=new RestTemplate();
Map<String, Object> params = new HashMap<>();
System.out.println("code = "+code);
params.put("code", code);
params.put("client_id", "*********");
//params.put("client_secret", "*********");
params.put("redirect_uri", "https://localhost:8081/auth/kakao/redirect");
params.put("grant_type", "authorization_code");
ResponseEntity<String> stringResponseEntity = restTemplate.postForEntity(GOOGLE_TOKEN_REQUEST_URL, params, String.class);
System.out.println(stringResponseEntity);
return stringResponseEntity.getBody();
}
현재 코드입니다.
(앱키가 공개되지 않도록 블라인드 처리 했습니다. )
가이드, 액세스 토큰 받기 REST API | Kakao Developers REST API
위 가이드와 같이 API 호출 시, Content-type: application/x-www-form-urlencoded;으로 호출해야합니다.
Body 영역에 파라메터를 쿼리스트링 형태로 전달하는 방식인데요.
아래와 같이 Content-type을 헤더에 설정하고 HttpEntity 구성하시면 될 것같습니다.
String REQUEST_URL = "https://kauth.kakao.com/oauth/token";
RestTemplate restTemplate=new RestTemplate();
// Set Header
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
headers.add("Accept", "application/json");
// Set parameter
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add("grant_type", "authorization_code");
params.add("client_id", "****");
params.add("redirect_uri", "****");
params.add("code", code);
// Set http entity
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(params, headers);
ResponseEntity<String> stringResponseEntity = restTemplate.postForEntity(REQUEST_URL, request, String.class);
친절한 답변 감사드립니다. 정상적으로 잘 동작합니다.
좋은 하루 되세요.