카카오톡 앱이 설치되어 있는데 계정 연결이 안되어 있을 때

카카오톡 간편로그인을 테스트하는 과정에 카카오톡은 사용하고 있지만 계정을 만들지 않고 전화번호 인증만으로 사용하는 회원이 있습니다.

이럴경우 간편로그인을 시도하면 아무런 반응이 없습니다.

카카오톡 연동은 다음과 같이 진행하였습니다.

    callback = new SessionCallback(); 
    Session.getCurrentSession().addCallback(callback);
    Session.getCurrentSession().open(AuthType.KAKAO_LOGIN_ALL, this);

그리고 리턴값은 아래와 같이 했더니… RESULT_OK 로 떨어집니다.

다른 어플들을 보니… 계정이 없는 경우 아이디/패스워드 넣는 창으로 넘어갑니다.

이를 어떻게 구현하면 되나요?

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    Log.d("Kakao" , Integer.toString(requestCode) );

    {
        if(Session.getCurrentSession() != null)
        {
            if(Session.getCurrentSession().handleActivityResult(requestCode, resultCode, data))
            {
                if(resultCode == RESULT_OK)
                {
                    Log.d("KakaoOK" , Integer.toString(requestCode) );
                }
                else if(resultCode == RESULT_CANCELED)
                {
                    Log.d("KakaoCN" , Integer.toString(requestCode) );
                }
                return;
            }
        }
    }

    super.onActivityResult(requestCode, resultCode, data);
}

V/ActivityThread: updateVisibility : ActivityRecord{3f3242d token=android.os.BinderProxy@353f49f {xxxxxxx.KakaoActivity}} show : false
V/ActivityThread: updateVisibility : ActivityRecord{9d1abe5 token=android.os.BinderProxy@8d34e81 {xxxxxxx/com.kakao.auth.authorization.authcode.KakaoWebViewActivity}} show : true

여기서 show : false , show : true 인데 화면이 나타나지 않는 이유는 무엇인가요?

MainActivity에서 KakaoActivity를 호출해서 onActivityResult는 KakaoActivity에 기술했습니다

세션 코드를 변경해니 처리가 되네요.

웹뷰에서 타이머를 사용하고 있었는데 이 부분을 false를 true 로 처리했더니 됩니다.

public ISessionConfig getSessionConfig() {

    return new ISessionConfig() {
        @Override
        public AuthType[] getAuthTypes() {
            return new AuthType[] {AuthType.KAKAO_LOGIN_ALL};
        }

        @Override
        public boolean isUsingWebviewTimer() {
            return true; <== false를 true
        }

        @Override
        public ApprovalType getApprovalType() {
            return ApprovalType.INDIVIDUAL;
        }

        @Override
        public boolean isSaveFormData() {
            return true;
        }

        @Override
        public boolean isSecureMode() {
            return false;
        }
    };
}