안녕하세요. 카카오 로그인 기능을 포함하여 서비스 중
앱 내 설정에도 불구하고 다른 계정으로 로그인이 노출되지 않아 문의드립니다.
로그인 기능은 카카오 버튼을 이용하지 않고 세션이 열려진 상태에서 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
다른 로그인으로 로그인하기를 화면상에 노출 시키고자 하는데 잘못알고 있는 부분이나 잘못된 설정사항이 있는지 검토 부탁드립니다.
감사합니다.