Cordova inappbrowser 에서 카카오톡 로그인 하는 방법 없을까요..?

iOS에서 cordova inappbrowser 을 이용하여 카카오툭로그인을 사용하려고 합니다.
이메일과 ID를 입력하고 로그인은 성공했는데.
결과를 전달을 하지 못하고. 현재 열려있는 창도 닫치지 않은 현상이 발생을 합니다.
어떻게 해결하는 방법이 없을까요?

@blackcard_eslim

웹뷰의 경우 현재 공식적으로는 지원하지 않고 있습니다. 혹시 해결 방법을 찾으신 경우 공유해 주시면 다른 분들께 도움이 될 것 같습니다. 감사합니다!

https://devtalk.kakao.com/t/ios-javascript-sdk/43?u=vincent

카카오에서 지원을 해줘야 할 부분인것 같은데…아쉽네요…
저같이 삽질 안했으면 하는 바램으로 제가 처리한 방법을 공유하겠습니다.
제가 처리한 방법은 좋은 방법같진 않습니다. 카톡 SDK를 손봐야 하는 문제가 있기에
카카오측에서 구조변경을 한다면 처리 안되는 문제가 발생할 수 있습니다.
카카오 관계자께서 이글을 보신다면 웹뷰를 이용하여 처리 할 수 있는 방안을 찾아주셨으면 합니다.

카톡 javascript SDK 파일중 아래 부분이 있습니다.
Auth.login 부분을 아래 코드로 대체 하면 cordova inappbrowser를 이용할 경우 처리 됨을 확인 할 수 있을 겁니다.
테스트는 IOS에서 해 봤고 안드로이드에선 아직 해보지 않았습니다.

이코드를 적용하여 안드로이드에서 해보신분을 결과를 남겨주세요.

    Auth.login = function(settings) {
        _k.processRules(settings, rules.login, 'Auth.login');

        if (!_loginProxy) {
            _loginProxy = getProxy({}, function(response) {
                var savedSettings = getSavedSettingsWithResponseState(response, _loginSettings);
                handleAuthResponse(response, savedSettings);
            });

            cleanups.push(function() {
                _loginProxy.destroy();
                _loginProxy = null;
            });
        }

        var stateToken = _.getRandomString();
        _loginSettings[stateToken] = settings;

        var popup = window.open(getAuthUrl(), '_blank', POPUP_FEATURES);
        if (typeof(popup.opener) === 'undefined') {
            popup.addEventListener("loadstop", loadStop);
        }

        function loadStop(e) {
            popup.executeScript({code:"var isCreate = false;"});
            var loop = setInterval(function() {
                var code =
                    "if (typeof(returnResponse) === 'function') {  "+
                        "    isCreate = true; " +
                        "    window._kakaoAgent = '"+_k.KAKAO_AGENT+"'; " +
                        "    window._exec = document.getElementsByTagName('script')[0].innerText.match(/reqwest\\(\\{(.|\\n)*?(\\}\\))/g)[0]; " +
                        "    window._exec = window._exec.replace(/proxyHost.getKakaoAgent\\(\\)/g, \"'\"+window._kakaoAgent+\"'\"); " +
                        "    window._exec = window._exec.replace(/proxyHost.getProxyOrigin\\(\\)/g, \"'\"+'"+location.origin+"'+\"'\"); " +
                        "    window.returnResponse = function (e) {" +
                        "        e.stateToken = clientParams[\"state\"]; "+
                        "        window._result = e; " +
                        "    }" +
                        "}";
                popup.executeScript({code:code},
                    function( values ) {
                        popup.executeScript({code:'isCreate'}, function(values) {
                            var isCreate = values[0];
                            if (isCreate) {
                                clearInterval(loop);
                                popup.executeScript({code:'eval(window._exec);'});
                                var loop2 = setInterval(function() {
                                    popup.executeScript( {code:'window._result'}, function(values) {
                                        var result = values[0];
                                        if (result !== null && typeof(result) !== 'undefined') {
                                            clearInterval(loop2);
                                            var savedSettings = getSavedSettingsWithResponseState(result, _loginSettings);
                                            handleAuthResponse(result, savedSettings);
                                            popup.close();
                                            popup.removeEventListener('loadstop', loadStop);
                                            popup = null;
                                            delete popup;
                                        }
                                    });
                                });
                            }
                        });
                    }
                );
            });
        }

        function getAuthUrl() {
            var authParams = _.buildQueryString({
                client_id: _k.RUNTIME.appKey,
                redirect_uri: 'kakaojs',
                response_type: 'code',
                state: stateToken,
                proxy: 'easyXDM_Kakao_' + _loginProxy.channel + '_provider'
            });

            return _k.URL.authorize + '?' + authParams;
        }
    };
4개의 좋아요