앱에서 Kakao.Auth.authorize 호출 시 간헐적 오류 발생합니다

문의 시, 사용하시는 SDK 버전 정보와 디벨로퍼스 앱ID를 알려주세요.


앱 ID : 386162, 207827

안녕하세요.
현재 사이트에서 웹 및 하이브리드앱 기반으로 카카오 로그인 서비스 기능 제공중인데요.
로그인 기능 수행 시 간헐적으로 로그인 버튼을 눌러도 반응이 없거나, 모바일 디바이스에 카카오톡 앱 인증을 완료 하고서 저희 사이트로 돌아와도 아무 반응이 없는 현상이 발생하는데요.

모바일 브라우저에서는 해당 문제가 발생하지 않는 것으로 보여지는데, 하이브리드앱에서 해당 증상이 발생하는 것으로 현재 보고 있습니다.

카카오톡 앱이 설치되어있어도 발생하지만, 주로 증상 재현을 해보니 카카오톡 앱이 깔려있지 않은 상태의 디바이스거나, 설치되어있어도 로그인 하지 않았을 경우에 카카오 로그인 버튼을 누르면 카카오 로그인 웹 페이지라도 열리는게 정상인 것 같은데, 간헐적으로 열리지가 않습니다.

그래서 우선 안드로이드 같은 경우 크롬 inspect로 증상이 발생하는 디바이스를 연결해 console 및 네트워크 탭을 확인 한 결과 네트워크 탭에서 이런 오류가 발생하는데, 이게 원인이 무엇일까요? 어떻게 장애 대응을 해줘야 할까요?

아래는 네트워크 탭 오류 첨부파일입니다.

감사합니다.


안녕하세요.

카카오 로그인에 JS SDK 사용하신게 맞으실까요?
SDK의 사용하신 메소드 이름 부탁드립니다.

네 우선 html 헤더 내용은 다음과 같습니다.

<script src="//developers.kakao.com/sdk/js/kakao.min.js></script>
Kakao.init('코드');

로그인 페이지의 소스코드는 다음과 같습니다.

if ( Kakao.isInitialized() ) {
	// Kakao javascript SDK login
	Kakao.Auth.authorize({
		redirectUri: KAKAO_CALLBACK_URI,
		state: KAKAO_MEMBER_LOGIN_STATE
	});
}

현재 사이트에 적용해서 2년 넘게 사용 중이며, 평상시에는 큰 문제 없이 로그인 서비스를 사용 중 입니다.

안녕하세요.

네트워크 로그를 가리지 말고 올려주시겠어요?
그리고 해당 URL 접근 시 화면, Response Headers도 부탁드립니다.

안녕하세요 해당 페이지에서 카카오 로그인 버튼 클릭 시 네트워크 로그 공유드립니다.

감사합니다.


에러 url에 대한 정보




안녕하세요.

카카오톡이 설치된 환경에서 테스트 하신게 맞으실까요?

네 두 환경(설치/미설치) 모두 테스트 하였습니다.

하이브리드 앱 가이드 | Kakao Developers 하이브리드 앱 가이드

위 가이드내용과 구현하신 내용 비교가 필요해 보이며 JS SDK 사용 코드 확인이 필요합니다.

첨부 이미지의 code.json? 요청은 JS SDK가 카카오톡 스킴을 호출한 뒤 톡 인증 여부를 확인하는 풀링 요청입니다.
이 요청이 시작되었다는 것은 인텐트 스킴을 통해 카카오톡 호출(톡 설치 여부 무관)을 했다는 이야기 인데요

하지만 로그 중에 login?continue=.. 요청이 보입니다.
이 경우 웹뷰에서 별도로 fallback_url 처리를 하지 않았다면 이 요청이 먼저 진행되거나 중간에 진행될 수 없습니다.

네트워크 로그로는 AndroidManifest 설정이나 shouldOverrideUrlLoading 구현이 원인이 되어 잘못 처리되고 있는 것으로 보이는점 참고 부탁드립니다.

안녕하세요. 앱개발자와 확인을 진행하는데 해결이 되지 않아 거듭 문의드려 죄송합니다.

우선 앱에서 fallback_url 처리를 다음과 같이 진행하였는데 이 부분 외에 더 체크해야하는 부분이 있을까요?


fallback_url :카카오계정

안녕하세요.

잘 구성된 것으로 보입니다.
회원님 웹뷰의 User-Agent 값과 로그인 버튼 클릭이벤트에 매핑된 코드 부탁드립니다.

안녕하세요 해당 정보 공유드리겠습니다.

  1. User-Agent :
    Mozilla/5.0 (Linux; Android 12; SM-G975N Build/SP1A.210812.016; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/135.0.7049.38 Mobile Safari/537.36/nuncmall_app/AOS/10.18

  2. 버튼 클릭이벤트 매핑된 코드의 의미를 잘 모르겠는데
    kakao.init에 사용한 코드 공유드립니다.
    0e02381dad2adee0ccbcd05d0ff72cba

감사합니다.

웹뷰에서 항상 fallbackurl 로 진입하는 것으로 보이는데요
resolveActivity 결과가 항상 null은 아닌지 확인 부탁드립니다.

확인해본 결과 항상 null로 진입하는 것은 아닌 것으로 확인되었습니다.
현재 테스트를 위해 재현이 가장 잘되는 방법으로

  1. 카카오톡 앱 설치 안한 상태로 간편 로그인 시도
  2. 카카오톡 앱 설치만 한 상태로 간편 로그인 시도
  3. 카카오톡 앱 설치 후 로그인 한 상태로 로그인 시도(재현이 잘 안되나, 운영에서 이슈 발생한 현상)
  4. 아래 영상이 운영 상황에서 발생한 오류입니다.
  5. 방금 전 증상 재현을 진행하였고 해당 상황은 카카오톡 앱 설치만 한 상황에서 재현 정보입니다.
카카오톡 미설치 시, 카카오 로그인

카카오톡 미설치 시, 인텐트 스킴 호출이 불가하므로 하이브리드 앱 가이드와 같이 fallback_url 처리 하시면 됩니다.
구현 하신 내용상 문제는 없어 보이며 웹 기반의 로그인 정상 동작할 것으로 보입니다.

단, 디바이스 설정 지역 및 시간과 서버간 시간이

카카오톡 미로그인 시, 카카오 로그인

카카오톡 설치 되었으나 톡 로그인 하지 않은 경우 더 이상 동작하지 않는 상황이 발생할 수 있습니다.
이 이슈는 알려진 엣지 케이스로 관련한 개선 방안을 마련중에 있습니다.
다만 일반적으로 발생하지 않는 케이스로 테스트 시 고려하지 않는 것을 추천 드립니다.

카카오톡에서 앱으로 돌아왔을 때 무반응

회원님 운영 서비스 및 개발 서비스로 부터의 요청 로그를 확인해보았으나
카카오톡에서 인증이 완료되었는지 확인하는 폴링 과정이 타 앱으로 진입하거나 돌아올 때, 더 이상 요청되지 않는 점이 확인됩니다.

회원님께서 개발중인 앱을 살펴볼 수 없어 정확한 원인 파악이 어려운데요
따라서 구현하신 웹뷰 확인이 필요해 보입니다.

웹뷰 내에서 setInterval 과 같은 타이머를 넣어 지속 동작 가능한 상태인지 확인 부탁드립니다.

안녕하세요, 문의 지원에 감사드립니다.

결국 마지막 항목이 가장 문제이긴 한데, 마지막에 말씀해주신 내용 중에 웹뷰에 setInterval 를 넣어서 지속 동작 가능한 상태란 무슨 의미인지 이해가 안되는데, 어떤 것을 체크해야하는지 샘플 코드 같은 것을 받을 수 있을까요?

다음과 같이 테스트 코드를 주입하여 타이머가 계속 동작 가능한 상태인지 확인 부탁드립니다.

setInterval(function() {
  console.log("working: " + new Date());
}, 1000)

추가로, 사용하신 웹뷰 캐시 정책도 확인 부탁드립니다.

안드로이드 웹뷰 캐시 정책의 경우
최근 한달 전 쯤 LOAD_CACHE_ELSE_NETWORK 로 설정하였고, 설정 후 서버 장애로 페이지 오류 문제가 발생하였는데, 장애 복구를 진행해도 사이트 화면이 변경되지 않는 문제가 발생하게 되어 추가로 앱을 처음 실행할 때마다 웹캐시 클리어를 하도록 설정 작업을 진행하여 배포한 내역이 있습니다.

감사합니다.

추가로 테스트 코드 주입 후 정보 확인해보니, 타이머는 계속 동작되는걸로 확인됩니다.

감사합니다.

네트워크 탭

console 탭

1개의 좋아요

LOAD_NO_CACHE로 설정해 보시겠어요?
LOAD_CACHE_ELSE_NETWORK 설정 시, 카카오톡 인증 여부를 확인하는 폴링요청이 캐시되어 더 이상 실제로 확인하지 않게 될 수 있습니다.

LOAD_NO_CACHE로 적용해보고 테스트 수행해봤는데

카카오톡 미설치 시 카카오 로그인

  • 로그인 버튼 클릭 후 반응이 없는 발생하는 현상 재현 됩니다.

카카오톡 설치 및 로그인 후 카카오 로그인

  • 로그인 버튼 클릭 후 반응이 없는 현상 재현되지 않았습니다.

혹시 미설치 한 상태에서는 왜 그런지, 대응을 뭔가 추가로 해줘야 하는지 궁금합니다.
예를 들면, Kakao.Auth.authorize 함수를 try-catch로 감싸서 catch 시 /oauth2/authorization/kakao 를 통한 rest 인증을 진행해야 할지요