=> 반환되는 코드
ya3J5jFCTqOBIpgSi3fBfrg1V9PlcTDaszmV_CvhZtheAMzBP4P57tDN40t4FxoVCGBA1go9c-sAAAF6GI7i0w
controller
@RequestMapping("/login")
public String login(@RequestParam(“code”) String code) throws Exception {
String accessToken = kakaoAPI.getAccessToken(code);
System.out.println("controllerToken = " + accessToken);
return “/index”;
}
service
public class KakaoAPI {
public String getAccessToken(String authorize_code) {
String access_Token = “”;
String refresh_Token = “”;
String reqURL = “https://kauth.kakao.com/oauth/token”;
try{
URL url = new URL(reqURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// POST 요청을 위해 기본값이 false인 setDoOutput을 true로
conn.setRequestMethod("POST");
conn.setDoOutput(true);
// POST 요청에 필요로 요구하는 파라미터 스트림을 통해 전송
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream()));
StringBuilder sb = new StringBuilder();
sb.append("grant_type=authorization_code");
sb.append("&client_id={RESTAPI_KEY}");
sb.append("&redirect_uri=http://localhost:8080/login");
sb.append("&code=" + authorize_code);
bw.write(sb.toString());
bw.flush();
// 결과 코드가 200이라면 성공
int responseCode = conn.getResponseCode();
System.out.println("responseCode : " + responseCode); <-**401**
System.out.println(conn.getResponseMessage()); <- **Unauthorized**
// 요청을 통해 얻은 JSON타입의 Response 메세지 읽어오기
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = "";
String result = "";
while ((line = br.readLine()) != null) {
result += line;
}
System.out.println("response body : " + result);
// Gson 라이브러리에 포함된 클래스로 JSON파싱 객체 생성
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(result);
access_Token = element.getAsJsonObject().get("access_token").getAsString();
refresh_Token = element.getAsJsonObject().get("refresh_token").getAsString();
System.out.println("access_token : " + access_Token);
System.out.println("refresh_token : " + refresh_Token);
br.close();
bw.close();
} catch (Exception e){
e.printStackTrace();
}
return access_Token;
}
}
error
java.io.IOException: Server returned HTTP response code: 401 for URL: https://kauth.kakao.com/oauth/token
플랫폼
WEB
사이트도메인 http://localhost:8080
Redirect URI
http://localhost:8080/login
==============================================================================================================
RESTAPI_KEY는 developers -> 내 내플리케이션 -> 앱키 -> REST API 키 에 있는 값을 입력했습니다.
바로 위의 링크를 보고 작업을 했습니다.
그대로 따라치면서 REST_API_KEY 나 redirect_uri만 제가 작업하는 내용으로 변경했습니다.
그리고 결과가 부분에 해당하는 결과로 출력됩니다.
에러내용이 권한 승인 문제라고 알고있는데
https://developers.kakao.com/docs/latest/ko/kakaologin/prerequisite
이 링크에 적힌 활성화설정, Redirect URI 외에 더 설정해야 할 것이 있나요?
내 애플리케이션 -> 플랫폼 -> WEB에 http://localhost:8080을 입력해놓은 상태입니다.