안녕하세요
(1) java.io.IOException: Server returned HTTP response code: 401 for URL: https://kauth.kakao.com/oauth/token
카카오측에 타이어나라 토큰 요청 로그가 없는걸 보면, Request데이터가 훼손 되었을 것 같습니다.
토큰 요청은 예제 코드 그대로 사용하셨나요?
→
① https://kauth.kakao.com/oauth/authorize?client_id=a0641350ab6b6afac7***&redirect_uri=http://test1.tirenara.net/test.do&response_type=code
② 6OF30GTcZ8ijfCBuLLNxEGjPbsCxMGVFYl0truLU5Ei7nXeYL7CFF6Ip1Eb34grJ1j0-aQopdSkAAAF9Ji-lrg
③ {“grant_type”: “authorization_code”, “client_id”: “a0641350ab6b6afac7ba8fb30d11913f”, “redirect_uri”: “http://test1.tirenara.net/test.do”, “code”: “6OF30GTcZ8ijfCBuLLNxEGjPbsCxMGVFYl0truLU5Ei7nXeYL7CFF6Ip1Eb34grJ1j0-aQopdSkAAAF9Ji-lrg”}
request데이터가 code밖에 없지 않나요? 개발서버에서 ①번에서 인가코드를 받고 ②번의 code를 가지고 다시 ③ 토큰을 요청했습니다.
혹시 모르니 소스도 올려보겠습니다.
String restApiKey = “a0641350ab6b6afac7ba8fb30d11913f”;
String code = params.getString(“code”);
String redirectUrl = request.getScheme() + “://” + request.getServerName() + “/test.do”;
System.out.println("################################## " + code);
URL url = new URL("https://kauth.kakao.com/oauth/token");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; utf-8");
con.setRequestProperty("Accept", "application/json");
con.setDoOutput(true);
con.setRequestProperty("Authorization", restApiKey);
String jsonInputString = "{\"grant_type\": \"authorization_code\", \"client_id\": \"" + restApiKey + "\", \"redirect_uri\": \"" + redirectUrl + "\", \"code\": \"" + code + "\"}";
System.out.println(jsonInputString);
try (OutputStream os = con.getOutputStream()) {
byte[] input = jsonInputString.getBytes("utf-8");
os.write(input, 0, input.length);
}
try (BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"))) {
StringBuilder response2 = new StringBuilder();
String responseLine = null;
while ((responseLine = br.readLine()) != null) {
response2.append(responseLine.trim());
}
System.out.println(response2.toString());
}
(2) 운영서버에서 발생하는 자세한 에러 확인할 수 있을까요?
자세한 에러는 아래 url에서 확인 가능합니다.
→
“https://www.tirenara.net/test.do?code=SYN4ADON0X8yXvhtOnz32i9Ha8prlbsJehdFYbrz1pgbDjXm7Xu-QRRqoBnvseNtrBZ9nQorDNQAAAF9Ji5DEA”
->자바 버전 확인
[root@autoonlineweb ~]# javac -version
javac 1.8.0_65
→ ca-certificates 버전 확인
[root@autoonlineweb ~]# rpm -q ca-certificates
ca-certificates-2015.2.6-65.0.1.el6_7.noarch
-
자바 버전이 낮은데 루트 인증서를 설치하면 될까요?
-
아니면 지금 방식에 rest api인데
ios에서 생긴 이슈가 window.open 새창 문제가 있는거라…
리다이렉트 방식으로 해봐도될까요?
(확인해보니 redirect 방식으로 개발하려고해도 token받기가 필요하네요…)