안드로이드 카카오톡 인앱브라우저 로그인 에러

문의 시, 사용하시는 개발환경과 디벨로퍼스 앱ID를 알려주세요.


앱 ID : 1047510

https://kauth.kakao.com/oauth/authorize?client_id=${id}&redirect_uri=${callbackURL}&state=${encodeURIComponent(JSON.stringify(callbackContext))}&response_type=code&prompt=login

위 처럼 인가요청을 시도하는데 안드로이드 환경 카카오톡 인앱브라우저에서만 KOE320 authorization code not found for code={code} 에러가 발생하며 정상적으로 로그인이 되지 않고있습니다.

안녕하세요.

KOE320 오류는 유효하지 않은 인가코드를 사용할 때 발생하는데요
동일한 인가코드를 다시 사용하면 유효하지 않은 코드로 처리됩니다.

인가코드는 성공 실패와 무관하게 단 한번만 사용 가능합니다.

카카오측 로그에는 서비스에서 동일 인가코드로 접근토큰을 매우 빠르게 다시 요청하는 케이스가 확인됩니다.

확인 감사합니다.

안드로이드 환경 카카오 인앱 브라우저에서만 KOE320오류가 확인되는데 관련 로그등의 추가적인 정보가 있을까요? 서비스 로직에서 요청은 무조건 1회만 이루어지고 있습니다.
테스트를 위해서 authorization 부분을 분리해두고, 안드로이드 인앱 브라우저에서 토큰을 발행받아 수동으로 처리했는데, 위에 말씀드린 환경에서는 KOE320 오류가 발생하고, 위 환경에서 똑같이 토큰을 발행받아 IOS 기기나 외부 브라우저에서 수동으로 처리하는 경우에는 에러가 발생하지 않고 있습니다.

안녕하세요.

에러 발생할때 로그인 시도한 계정 앱유저 ID 알려주시겠어요?

(발생하는 에러가 다양해서 해당 상황 특정해서 안내드리도록 하겠습니다.)

앱 유저 ID 전달드립니다. 감사합니다.

3427516456

May 18, 2024 @ 11:16:05.765 /oauth/authorize
May 18, 2024 @ 11:17:04.562 /oauth/token
May 18, 2024 @ 11:17:06.548 /v2/user/me
May 18, 2024 @ 11:24:10.991 /oauth/token KOE320

사용된 인가코드 : CD8RRyIKGZYJ_rYVCyqi9lxWlPx1EBGj20txEwuz9-W6T0Z5BtQc2QAAAAQKKwzTAAABj4l8JX_7Ewsnpgvovw

액세스 토큰 발급 요청 성공이후 다시한번 요청한것이 맞으며

시차로 볼때 사용자 새로고침 등에 의해 발급되었을 것으로 추정됩니다. (유사 케이스가 많이 보입니다.)
액세스 토큰 발급과 사용자 정보 조회까지 성공했는데 이용자가 리다이렉트 URI에 머물렀다는 것은 해당 페이지에서 에러 발생했거나 로딩 지연이 있었을 것으로 보입니다.

사용자 정보조회가 정상 처리되었으므로 운영하시는 서비스측 문제로 추정됩니다.


특이 케이스로 아래와 같은 경우도 있습니다. 의도적으로 새로고침 했다고도 볼 수 있을 것 같은데요.

May 20, 2024 @ 15:32:19.035 /oauth/authorize
May 20, 2024 @ 15:32:21.133 /oauth/token
May 20, 2024 @ 15:32:21.714 /oauth/token KOE320
May 20, 2024 @ 15:32:22.170 /oauth/token KOE320
May 20, 2024 @ 15:32:26.301 /oauth/token KOE320
May 20, 2024 @ 15:32:27.553 /oauth/token KOE320


톡 인앱브라우저가 아니며, 인가코드 없이 액세스 토큰 발급 요청한 건도 다수보이고 KOE006에러도 보입니다.

리다이렉트 URI에 서비스측에 문제 요소 확인 해보시면 좋을 것 같습니다.

같은 유저 ID 로그 중 빠른 시간내에 연달아 요청되는 다른 케이스도 있을까요??

현재 문제되는 케이스는 카카오톡 인앱 브라우저에서 로그인 시도시에 즉시 KOE320 에러가 재현디는 이슈입니다.

가장 최근 로그입니다.

May 21, 2024 @ 16:49:53.209 /oauth/authorize 302
May 21, 2024 @ 16:49:53.861 /oauth/token 200
May 21, 2024 @ 16:49:53.892 /oauth/token 400
May 21, 2024 @ 16:51:08.149 /oauth/token 400
May 21, 2024 @ 16:51:08.200 /oauth/token 400

즉시 재현된다는 것으로 추정할때 내부 Redirect 되고 있지 않을까 싶습니다.

로그 확인 감사합니다 ㅠ

1개의 좋아요

oauth/token 요청을 수동으로 실행하는 버튼을 분리하여 다시 확인해보았는데 안드로이드 카카오인앱브라우저에서만 KOE320에러가 여전히 발생하고 있습니다. 의심가는 부분이 있을까요.ㅠㅠㅠㅠ 같은 방식으로 테스트 해보았을때 IOS 카카오 인앱 브라우저 및 , 기본 브라우저 등에서는 정상 작동되는 것으로 확인했습니닷… 귀찮게 해드려 죄송합니다.

혹여나 도움이 될까, 서비스 URL은 https://swapswap.kr 입니다.

안녕하세요.

서비스측 redirect_uri 에서 카카오톡 인앱브라우저 여부를 판단하여 외부 브라우저로 이동 시키는 코드가 확인됩니다
때문에, 최종적으로 동일 URL에 대해 인앱 브라우저와 외부 브라우저에서 두번 접근할것으로 보입니다.

다른이야기지만,
카카오톡의 비공개 스킴을 사용하여 톡 외부 브라우저로 이동 시키는 코드는 공식적으로 제공되는 기능이 아닙니다.
해당 기능의 경우 언제든지 변경될수 있음을 참고 부탁드립니다.

외부 브라우저로 이동시키는 코드는 위 에러로 인해 발생하는 서비스 장애를 우회하기 위한 임시 수단입니다. 테스트 환경을 제공해드리는게 나을까요?

인가코드는 302 리디렉션으로 전달되기에 브라우저를 통하여 단 한번만 전달됩니다.
때문에, 보통 인가코드가 2번 사용되는 경우는 서비스가 아래와 같이 처리하는 경우 발생합니다.

  1. 서비스가 redirect_uri 엔드포인트에서 처리완료 후 다른 url로 다시 리디렉션하지 않는 경우
    이 경우 사용자의 브라우저에 따라 화면전환 등의 이유로 브라우저가 url을 다시 호출될수 있기에 인가코드가 두번 전달되는 것 처럼 동작할 수 있습니다.

  2. 서비스가 인가코드를 javascript를 이용하여 추출하여 백엔드로 전달할 때
    react hook 에서 이러한 처리를 하거나 1번의 사례처럼 처리 완료후 url을 이동 시키지 않는 경우 브라우저에 의해 두번 전달되는 것 처럼 동작할 수 있습니다.

위 경우 모두 해당되지 않으신다면 테스트 환경을 제공 부탁드리며 사용되는 스크립트는 압축하지 않도록 부탁드립니다.