[Android/Kotlin] 카카오톡으로 로그인 실패 302 에러

SoyoungLee·2022년 8월 22일
0
post-thumbnail

[Android/Kotlin] 카카오톡으로 로그인 실패 302 에러

📌 이슈

카카오 SDK 를 이용하여 로그인을 구현하던 중 302 에러가 떴다.

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

아래 코드에서 카카오톡이 설치는 되어있어서 loginWithKakaoTalk 을 실행했지만, 계정이 연결 안되어있을 때 로그인이 실패하는 에러였다.

// 카카오톡이 설치되어 있으면 카카오톡으로 로그인, 아니면 카카오계정으로 로그인
        if (UserApiClient.instance.isKakaoTalkLoginAvailable(mContext)) {
            UserApiClient.instance.loginWithKakaoTalk(mContext,callback = callback)
        } else {
            UserApiClient.instance.loginWithKakaoAccount(mContext, callback = callback)
        }

즉 우선 loginWithKakaoAccount을 이용하여 로그인 구현하면 해결된다.

💜 해결 방안

이에 대한 예외처리로, 카카오 계정 로그인을 따로 메소드로 빼주어 302 에러가 날 시에 실행을 시켜주도록 했다.


...

// 카카오톡이 설치되어 있으면 카카오톡으로 로그인, 아니면 카카오계정으로 로그인
	if (UserApiClient.instance.isKakaoTalkLoginAvailable(mContext)) {
		UserApiClient.instance.loginWithKakaoTalk(mContext,callback = callback)
	} else {
		loginWithKakaoAccount()
	}

...


// 카카오톡 설치 되어있지만, 로그인이 안되어있는 가능성이 있어서 따로 메소드를 빼줘서 예외처리.
private fun loginWithKakaoAccount(){
	UserApiClient.instance.loginWithKakaoAccount(mContext, callback = callback)
}

콜백 함수에서 302 에러 일 때 예외처리를 해준다.

// 카카오 로그인 공통 callback 구성
    val callback: (OAuthToken?, Throwable?) -> Unit = { token, error ->
        if (error != null) {
            Log.e(TAG, "카카오계정으로 로그인 실패", error)
            if (error.toString().contains("statusCode=302")){
                loginWithKakaoAccount()
            }

        } else if (token != null) {
        
        	...
           
        }
    }

참고 : https://parkwow.medium.com/kakaotalk-is-installed-but-not-connected-to-kakao-account-5a77bb38d177
https://devtalk.kakao.com/t/loginwithkakaotalk/109827
https://daldalhanstory.tistory.com/292

profile
Android Developer..+ iOS 슬쩍 🌱 ✏️끄적끄적,,개인 기록용 👩🏻‍💻

0개의 댓글