버튼 수집상

[안드로이드] 카카오 로그인 SDK - 앱 로그인 실패시 계정 로그인으로 우회 본문

TIL - 안드로이드

[안드로이드] 카카오 로그인 SDK - 앱 로그인 실패시 계정 로그인으로 우회

cocokaribou 2022. 11. 23. 12:34

배경

카카오 로그인 SDK 테스트할 때

카카오톡이 설치 돼있으나 로그아웃된 상태

에서 에러가 났다.

웬만한 상용 폰은 카카오톡 로그인이 돼 있지만

QA/디버깅용 공기계에서는 자주 발견할 수 밖에 없었다.

 

그런데 공식 문서에 따로 정의돼있지 않은 에러였다.

 

AuthError(statusCode=302, reason=Unknown, response=AuthErrorResponse(error=NotSupportError, errorDescription=KakaoTalk is installed but not connected to Kakao account.))

 

 

해결-1

정의 안 된 에러가 더 있을 수 있으므로 일일히 대응하지 않고

카카오톡앱 로그인에서 어떤 에러가 발생하더라도

카카오계정 로그인으로 우회하도록 처리했다.

카카오 SDK 공식 문서에서 그렇게 하도록 권장하는 것 같았다.

val kakaoLoginCallback: (OAuthToken?, Throwable?) -> Unit = { token, error ->
    if (error != null) {
        Logger.e("kakao 계정 로그인 실패- $error")
    } else if (token != null) {
        runKakaoLogin(token)
    }
}

fun onKakaoLogin() {
        UserApiClient.instance.loginWithKakaoTalk(this) { token, error ->
            if (error != null) {
                Logger.e("kakao 앱 로그인 실패- $error")

                // 사용자가 카카오톡 설치 후 디바이스 권한 요청 화면에서 로그인을 취소한 경우,
                // 의도적인 로그인 취소로 보고 카카오계정으로 로그인 시도 없이 로그인 취소로 처리 (예: 뒤로 가기)
                if (error is ClientError && error.reason == ClientErrorCause.Cancelled) {
                    return@loginWithKakaoTalk
                }

                // 카카오앱 로그인 에러가 날 시
                // 카카오계정으로 로그인 시도
                UserApiClient.instance.loginWithKakaoAccount(this, callback = kakaoLoginCallback)

            } else if (token != null) {
                runKakaoLogin(token)
            }
        } else {
            UserApiClient.instance.loginWithKakaoAccount(this, callback = kakaoLoginCallback)
        }
    }
}

그런데 우회해서 진입한 카카오계정 콜백에서

로그인 시도 후 토큰값이 넘어오지 않았다.

 

해결-2

알고보니 SDK 버전 2.11.1에서 발견되는 버그라고 한다.

2.11.0으로 낮추거나 2.11.2로 올리면 제대로 콜백을 타는 것을 볼 수 있다.

 

 

카카오톡 로그인 loginWithKakaoAccount callback 무응답

제보주신 이슈 수정된 2.11.2 버전 배포되었습니다. 이슈 제보 주셔서 다시 한번 감사드립니다.

devtalk.kakao.com

 

 

참고

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

728x90