다른 계정으로 로그인 버튼을 노출하려면 어떻게 설정해야되나요

안녕하세요. 카카오 로그인 기능을 포함하여 서비스 중
앱 내 설정에도 불구하고 다른 계정으로 로그인이 노출되지 않아 문의드립니다.

로그인 기능은 카카오 버튼을 이용하지 않고 세션이 열려진 상태에서 UserManagement.getInstance().me()를 호출하여
sns id를 가져와 서버와 동기화 합니다.

현재 설정된 사항은 아래와 같습니다.

[ KakaoAdapter ]

class KakaoSDKAdapter : KakaoAdapter(){

override fun getSessionConfig(): ISessionConfig {
    return object : ISessionConfig {
        override fun isSaveFormData(): Boolean = true

        override fun getAuthTypes(): Array<AuthType> = arrayOf(AuthType.KAKAO_LOGIN_ALL)

        override fun isSecureMode(): Boolean = false

        override fun getApprovalType(): ApprovalType = ApprovalType.INDIVIDUAL

        override fun isUsingWebviewTimer(): Boolean = true
    }
}

override fun getApplicationConfig(): IApplicationConfig? = getGlobalApplicationContext

}

[ 카카로 로그인 구현 ]

fun login(act: Activity, listener: LoginListener) {

Session.getCurrentSession().close()
Session.getCurrentSession().clearCallbacks()
//Session.getCurrentSession().checkAndImplicitOpen()
Session.getCurrentSession().addCallback(object : ISessionCallback {

    override fun onSessionOpenFailed(exception: KakaoException?) {
        exception?.printStackTrace()
    }

    override fun onSessionOpened() {
        arrayListOf<String>().apply {
            add("properties.nickname")
            add("properties.profile_image")
            add("kakao_account.email")
        }.let { keys ->

            UserManagement.getInstance().me(keys, object : MeV2ResponseCallback() {
                override fun onSuccess(result: MeV2Response?) {
                    listener.onSuccess(result)
                }

                override fun onSessionClosed(errorResult: ErrorResult?) {
                    listener.onSessionClosed(errorResult)
                }
            })

        }
    }
})
Session.getCurrentSession().open(AuthType.KAKAO_LOGIN_ALL, act)

}

[ 카카오 로그아웃 ]

fun logout(callback: LogoutResponseCallback) = {
    UserManagement.getInstance().requestLogout(callback)
    Session.getCurrentSession().clearCallbacks()
    Session.getCurrentSession().close()
}

[ onActivityResult ] - 로그인을 사용하는 Activity의 onActivityResult()에서 아래 구문을 호출합니다.

fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?):Boolean = Session.getCurrentSession().handleActivityResult(requestCode, resultCode, data)

============================================================================

카카오 로그인 시 아래와 같이 open메서드의 AuthType을 KAKAO_LOGIN_ALL로 전달하였고

  • Session.getCurrentSession().open(AuthType.KAKAO_LOGIN_ALL, act)

KakaoAdapter에서 getAuthTypes()에도 AuthType.KAKAO_LOGIN_ALL를 설정하였습니다.

  • override fun getAuthTypes(): Array = arrayOf(AuthType.KAKAO_LOGIN_ALL)

============================================================================

AuthType 설정타입 모두를 위 AuthType을 요구하는 두곳에 수정하여 테스트를 진행하였으나 KAKAO_ACCOUNT( 웹뷰 ) 타입 외 다른 타입들은 동일하게 다른 계정으로 로그인 선택하지 못하고 바로 로그인 되었습니다.

  • KAKAO_TALK
  • KAKAO_STORY
  • KAKAO_ACCOUNT
  • KAKAO_TALK_EXCLUDE_NATIVE_LOGIN // Deprecated
  • KAKAO_LOGIN_ALL
  • KAKAO_TALK_ONLY

다른 로그인으로 로그인하기를 화면상에 노출 시키고자 하는데 잘못알고 있는 부분이나 잘못된 설정사항이 있는지 검토 부탁드립니다.

감사합니다.

@amondz_official 혹시 테스트 하신 폰에 정상 카카오톡이 설치되어 있을까요? 카카오톡이 없다면 웹뷰가 바로 뜰 수 있어요.

@michael 답변주셔서 감사합니다.

현재 테스트 진행했던 기기들은 정상 개통되어 있는 기기이고 카카오톡도 사용중입니다.

  • 갤럭시 s8, 갤럭시 s7 엣지 등등 동일

또 하나의 문의글을 남기면서 의문이 들던게 하나 있는데, "카카오 로그인 버튼"이 아니라 아래
open() 메서드를 직접 호출하여 로그인 처리를 할경우에는 직접 다이얼로그를 만들어서 다른 계정로그인이 되도록
처리해주는게 맞나요?

  • Session.getCurrentSession().open(AuthType, Activity)

“카카오톡으로 간편로그인”, "다른 카카오계정으로 로그인"을 선택할 수 있는 다이얼로그를 직접만들어서 처리 하였는데
카카오에서 제공하는 다이얼로그가 아니라 이대로 써도 되는지 걱정이되네요.
다이얼로그를 유사하게 만들어서 사용해도 앱을 서비스하는데에는 문제가 없겠죠?

[ 아래는 카카오톡 로그인 버튼에서 제공하는 다이얼로그와 유사하게 직접 만든 다이얼로그입니다. ( 앱 서비스에 사용 ) ]

image