안녕하세요.
최근까지 카카오 SDK v1을 사용하다가 카카오 SDK v2로 마이그레이션을 했습니다.
그리고 우연의 일치인지는 모르겠지만, 마이그레이션을 한 버전부터 카카오 로그인 시 일부 소수 회원들에게서 다음과 같은 오류가 발생하면서 로그인이 되지 않는 현상이 발견되고 있습니다.
message:AuthFailed(reason: KakaoSDKCommon.AuthFailureReason.InvalidRequest, errorInfo: Optional(KakaoSDKCommon.AuthErrorInfo(error: KakaoSDKCommon.AuthFailureReason.InvalidRequest, errorDescription: Optional(“All required service terms must be approved. required:[7828, 7829, 7830] agreed:[]”))))
실제로 해당 오류를 겪은 회원은 웹에서는 회원가입과 로그인을 했는데 IOS 앱에서는 로그인이 되지 않는다고 합니다.
필수 동의 항목을 변경한 적이 없고, 단순히 버전 마이그레이션만 했는데 원인을 알 수 있을 까요?
또한 오류로 인해 필수 동의 항목이 누락된 게 맞다면 기존에 필수 동의 항목이 누락된 회원들을 어떻게 다시 항목을 동의시킬 수 있는지 알려주시면 감사하겠습니다.
All required service terms must be approved. required:[7828, 7829, 7830] 에러는 동의 받을 약관을 별도로 설정한 경우 보통 발생합니다. 첨부해주신 로그인 로직과 해당 앱에서 재현 테스트 해보니 현재 상태는 문제 없어보입니다.
안녕하세요. 안그래도 오늘 추가 문의 드리려고 했습니다.
저희 측에서는 아무런 조치도 취하지 않았는데, 회원분께서 iOS 엡에서 안되던 카카오 로그인이 정상적으로 실행된다고 연락이 왔습니다.
그래서 tim.l 님께서 어떠한 조치를 취해주신 줄 알았습니다.
기존에는 카카오로 로그인하기를 누르면 카카오톡이 실행되었다가 다시 앱으로 돌아온 뒤 카카오톡 로그인 에러(제가 보내드렸던 로그)가 발생했다고 했었습니다.
계속 저희의 앱스토어 기준으로 최신 버전의 앱을 사용했었는데, 어떻게 JAVASCRIPT_KEY로 요청했다가 이번에는 NATIVE_APP_KEY키로 요청할 수가 있는지 의문입니다.
저는 Native 환경에서 위에 적어드린 코드만을 사용하고 있습니다.
오류가 최초 발생한 시점(2021.11.01)과 오늘사이에 혹시 저희의 카카오 설정의 변경점이 있었나요?
저희는 앱에 어떠한 조치도 취하지 않았습니다.
그리고 인가 요청 이후 토큰 요청 없는 증상이란 무엇인가요?
그것이 이번 오류와 연관이 있을까요? 차후에 해당 오류가 발생하는 것을 미연에 방지하고 싶습니다.
실제로 로그인이 이루어 지지 않았기 때문에 로그에 회원정보가 없어서
해당 회원이 그 에러가 났다고 확신 할 순 없었지만, 해당 버전에서 난 오류를 모두 살펴본 결과
유저에 의해 취소됨, 유저가 로그인 거절함 에러를 제외하고는
해당 에러 'All required service terms must be approved’만 존재하였고, 에러 발생시점도 일치했기 때문에
해당 회원이 그 에러를 겪었다고 생각했습니다.
회원분께서 카카오 로그인을 누르고 카카오톡이 켜진 뒤, 다시 저희 앱으로 돌아와서 로그인이 실패(에러)했다고 말씀하셨기 때문에 카카오 로그인 프로세스 취소나, 로그인 거절 등의 에러는 아니라고 확신했습니다.
그러면 정확한 원인과 앞으로 발생할 같은 에러에 대해서 미연에 방지할 수 있는 방법은 없을까요?( Web환경이나 App환경 모두)
해당 회원은 웹사이트에서 먼저 회원가입을 한 뒤 웹에서 로그인도 정상적으로 되어 사용하였지만, 동일한 카카오 계정으로 앱 환경에서 로그인을 시도 했을 때 로그인이 되질 않았습니다.
또 이전에는 되질 않았다가, 아무런 카카오 설정도, 앱 업데이트도 하질 않았는데 로그인이 어떻게 되었는지도 궁금합니다…
"All required service terms must be approved. required:[7828, 7829, 7830] " 에러는 SDK에서 출력하는게 아니라
인증 서버에서 받아서 출력한다고 확인 했는데요.
실제 로그에는 NATIVE_APP_KEY 로 인증 서버에서 해당 에러를 출력한 이력 이 없었어요. 즉, iOS SDK를 사용 중 발생한 에러는 아니라는 것인데요.
인증 서버 이력에는 JAVASCRIPT_KEY를 사용했을때만 해당 에러가 확인 되고
이 에러는 카카오 싱크 적용하시면서 등록한 서비스 약관에 기존 회원이 동의하지 않고 진입했을때 발생할 수 있습니다. 즉, 기존 카카오 로그인회원이 약관동의를 하지 않은 상태에서 동의창 없이 진입했다는 것으로 유추할 수 있는데요.
카카오톡 인앱브라우저에서 웹사이트로 자동로그인을 시도한다면 에러가 재현될 수 있을 것 같긴합니다.
카카오톡 인앱브라우저에서 자동로그인은
(1) REST-API 방식 인가 요청일때, promt=none 파라메터를 전달하면 톡으로 인증하여 동의창 없이 인가 요청합니다. 필수 동의를 받지 않은경우 위 에러가 발생하구요.
(2) js sdk authorize함수에 promt=none 파라메터를 전달하거나 loginForm함수를 사용하는 경우도 자동로그인 구현할 수 있습니다.
로그를 가지고 합리적으로 의심해볼 수 있는 상황은
아이폰 카카오톡 인앱브라우저에서 서비스하시는 웹사이트에 접근하여 자동로그인 하는 경우 말고는 딱히 가능성이 없어보이긴하네요.
혹시, prompt=none설정이 있나요?
(참고로, 어디서든 필수 약관 동의가 되면 해당 문제는 해소되어 더이상 발생하지 않게됩니다.)