앱ID = 573050
안드로이드 핸드폰으로
- 크롬 브라우저로 로그인 요청을 보내면 https://kauth.kakao.com/error/network 가 나옵니다
- 삼성인터넷으로 요청을 하면 응답을 정상적으로 받지만, 카카오톡어플에서 계속해서 request를 보내는 것인지
아래와 같이 응답이 계속 옵니다
java.io.IOException: Server returned HTTP response code: 400 for URL: https://kauth.kakao.com/oauth/token
IOS나 PC에서는 문제가 없는데 위에같은 환경에서만 이러한 현상이 나타나는것 같습니다.
해결방법이 있는지 확인 부탁드립니다.
-
토큰값 호출
try { URL url = new URL(reqURL); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // POST 요청을 위해 기본값이 false인 setDoOutput을 true로 conn.setRequestMethod("POST"); conn.setDoOutput(true); String chnlClientId = authMessage.getString(chnlCd); // POST 요청에 필요로 요구하는 파라미터 스트림을 통해 전송 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream())); StringBuilder sb = new StringBuilder(); sb.append("grant_type="); sb.append(authMessage.getGranttype()); sb.append("&client_id="); sb.append(chnlClientId); sb.append("&redirect_uri="); sb.append(authMessage.getRedirecturl()); sb.append("&code="); sb.append(authorizeCode); bw.write(sb.toString()); bw.flush(); // 결과 코드가 200이라면 성공 int responseCode = conn.getResponseCode(); if(log.isDebugEnabled()) { log.debug("responseCode : " + responseCode); } // 요청을 통해 얻은 JSON타입의 Response 메세지 읽어오기 BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = ""; String result = ""; while ((line = br.readLine()) != null) { result += line; } if(log.isDebugEnabled()) { log.debug("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(); if(log.isDebugEnabled()) { log.debug("access_token : {}", access_Token); log.debug("refresh_token : {}", refresh_Token); } br.close(); bw.close(); } catch (IOException e) { log.error("getAccessToken error", e); } return access_Token;
2.화면단
$(document).ready(function(){
var isKakao = [[${param.isKakaoCert}]];
var code = [[${accessToken}]];
if(code) {
var serviceNm = /*[[${service}]]*/;
var cliendId = /*[[${kakaoChnlClientId}]]*/;
Kakao.init(cliendId);
Kakao.isInitialized();
Kakao.Auth.setAccessToken(code);
userInfo();
}
});
userInfo = function() {
Kakao.API.request({
url : '/v2/user/me',
success : function(response) {
// 필수 - 카카오계정(이메일), 전화번호
// 선택 - 성별, 출생연도, 생일
var userID = response.id; //카카오에서 발급해주는 ID
var userEmail = response.kakao_account.email;
var userGender = response.kakao_account.gender;
var userBirthyear = response.kakao_account.birthyear;
var userBirth = response.kakao_account.birthday;
var userPhoneNumber = response.kakao_account.phone_number;
},
fail : function(error) {
console.log('error : ', error);
}
})
}