Javascript sdk 관련ios webview 카카오 로그인 관련 문의 드립니다

안녕하세요. webview를 통해 하이브리드 앱 구현 중 ios쪽에서 카카오 로그인 기능이 원활하지않아 문의 드립니다.
현재 xcode시뮬에서는 로그인이 되는걸로 봐선 기능자체 문제는 아닐것 같습니다.


카카오 로그인을 누르면 위 사진처럼 뜨고 여기서 뒤로가기를 누르면 앱이 멈춘상태로 있습니다.

앱아이디: 632873

안녕하세요.

확인을 위해 앱 ID 부탁드립니다.


앱ID
https://developers.kakao.com/ 의 내 애플리케이션>앱 설정>요약 정보 : 기본정보에 있는 앱 ID
숫자로된 ID 입니다

ex) 123456

632873입니다

안녕하세요.

카카오 로그인 이후 정상적으로 아래 주소로 302 리디렉션 되는 것으로 보입니다.

https://gjsmart.gongju.go.kr/url/kakaoAuth

뒤로 가기 하셨을 때, 웹뷰 쪽에서 리디렉션 처리되고 계시는지 확인 부탁드립니다.

혹시
webView?.allowsBackForwardNavigationGestures = true
이 부분말고 다른 기능이 필요한걸까요?

그리고 옛날 ios버전에서는 정상적으로 로그인이 되는데 최근 ios버전에서는 팝업창이 뜨면서 안되는것 같습니다. 혹시 웹뷰소스외의 자바스크립트 소스를 수정할 필요가 있을까요?

웹뷰의 경우 추가로 구현하셔야 할 내용이 있는데요 아래 하이브리드 앱 가이드를 참고 부탁드립니다.

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

보내주신 사이트에서는 자바스크립트에서 window.open()함수를 사용하는것을 전제로 나와있는것 같습니다만
현재 자바스크립트소스에서는 window.open()없이 Kakao.Auth.authorize({})함수로 동작중입니다.

안녕하세요.

현재 아래 주소로 리디렉션 처리(인가코드 전달)되고 있습니다.
구현하시 웹뷰에서 해당 주소로 진입 가능하신지 확인 부탁드립니다.

http://192.168.11.119:8080/url/kakaoAuth

현재 로컬에서 js소스를 돌리면서 테스트중입니다. 같은 내부망이기에 해당 주소로 진입 가능합니다.

웹뷰에서 카카오 로그인은 JS SDK가 카카오톡을 호출 한뒤 카카오톡 인증 과정이 마무리 되었는지 웹뷰에서 폴링 과정을 통해 지속적으로 확인합니다.

JS SDK가 카카오톡에서 인증을 확인하면, 곧바로 location.href 사용하여 리디렉션 url을 호출하게 됩니다.

카카오측 로그에 인증확인을 성공하고 곧바로 리디렉션 처리된 로그가 확인됩니다.
웹뷰에서 해당 url로 전환이 차단되지 않는지 확인 부탁드립니다.

기존에는 리디렉션url을 호출하면 컨트롤러(자바)에서 로직을 처리한 후 로그인된 페이지로 이동해야하지만 카카오로그인
팝업이 뜨면서 자바소스가 정상동작하지 않는 것 같습니다.

혹시


이 창에서 뒤로가기를 눌렀을 때 스위프트나 자바스크립트에서 감지할 수 있을까요?

JS 에서는 불가하며 네이티브 앱에서 앱의 상태 변화를 감지하는 방법(applicationDidBecomeActive)을 사용하여 감지할 수 있습니다.
하지만, 본 이슈의 경우는 이 기능과는 상관 없이 웹뷰 내에서 서비스측 redirect_uri 로 전환되는지 확인이 필요하고 전환되지 않는경우 이를 막는 원인을 찾는것이 좋아 보입니다.

  1. 웹뷰의 아래 정의 부분에서 서비스측 redirect_uri가 감지 되는지 확인 부탁드리며 웹뷰 URL 호출을 제어하는 다른 로직이 있지 않는지 확인 부탁드립니다.
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void )
  1. 또한, 웹뷰 디버깅 하시어 네트워크 로그에서 /apiweb/code.json 요청이 발생하는지 확인 부탁드리며 이를 차단하지 않는지 또한 요청 전후 내용을 확인 부탁드립니다.

서비스측 redirect_uri는 웹뷰에서 받는 것이 아닌 자바에서 감지하고 웹페이지를 넘겨주고 있습니다.
이 과정에서 중간에 팝업이 뜨면서 자바가 페이지를 넘겨주지 못해서 발생하는 오류인듯 합니다.