모바일 OAUTH 로그오류 관련 문의

앱ID = 573050

안드로이드 핸드폰으로

  1. 크롬 브라우저로 로그인 요청을 보내면 https://kauth.kakao.com/error/network 가 나옵니다
  2. 삼성인터넷으로 요청을 하면 응답을 정상적으로 받지만, 카카오톡어플에서 계속해서 request를 보내는 것인지
    아래와 같이 응답이 계속 옵니다
    java.io.IOException: Server returned HTTP response code: 400 for URL: https://kauth.kakao.com/oauth/token

IOS나 PC에서는 문제가 없는데 위에같은 환경에서만 이러한 현상이 나타나는것 같습니다.
해결방법이 있는지 확인 부탁드립니다.

  1. 토큰값 호출

     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);
		}
	})
}

안녕하세요.

에러 발생 시간대를 알 수 있을까요?

2번 삼성브라우저에서 오류는 3/28 16:17쯤 발생했고
1번 크롬브라우저 오류는 내일 다시 발생시켜보겠습키다

다른 에러라 추정 했었는데… 400응답을 받으셨군요.
로그를 보니 KOE320

액세스 토큰 발급에 이미 사용된 인가 코드를 재사용 하셔서 에러 발생한 이력이 있습니다.
보통 리다이렉트 URI에서 새로 고침 하는 경우 발생합니다.


https://kauth.kakao.com/error/network 페이지가 표시된 것은 추가로 확인해보겠습니다.
이 페이지가 뜨는 에러는 현재 발생하고 있지 않나요?
image

https://kauth.kakao.com/error/network
이 에러는 학인해보니 3/28 13:14쯤 일어났습니다
안드로이드 크롬브라우저에서 카톡 로그인 요청하면 발생합니다

400 에러는 아이폰 사파리에서는 발생을 안하는데
안드로이드 삼성 브라우저에서 주기적으로 400에러 리스폰스가 옵니다

400에러가 여러건 확인되며 모두 KOE320에러입니다.

같은 인가코드로 액세스 토큰을 재요청하는 Flow나
라다이렉트 URI로딩이 느려 사용자가 새로고침할 수도 있으니
제공 하시는 서비스 로직 검토 해보셔야 할 것같아요.


'일시적인 네트워크 오류입니다’는
로그인 과정에서 네트워크가 변경되거나 네트워크 환경이 불안정한 경우 보여지는 페이지 입니다.

카카오톡을 이용한 간편로그인시 네트워크 에러가 발생합니다

'일시적인 네트워크 오류입니다’ 는 원인이 VPN이 켜져있었는데 VPN 끄고 하니까 잘됐습니다
400에러는 삼성브라우저에서만 발생하는데 방어코드를 심어서 해결했습니다
감사합니다

1개의 좋아요