카카오 로그인 시 오류 발생

안녕하세요.
카카오 로그인 시 릴리즈 버전에서는 잘 되는데 구글 마켓에 출시 후 아래와 같은 오류가 발생합니다.

현재 사용 버전음 com.kakao.sdk:v2-user:2.0.2 입니다.

E/Parcel: Class not found when unmarshalling: com.kakao.sdk.auth.AuthCodeClient
java.lang.ClassNotFoundException: com.kakao.sdk.auth.AuthCodeClient$resultReceiver$1
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:454)
at android.os.Parcel.readParcelableCreator(Parcel.java:3031)
at android.os.Parcel.readParcelable(Parcel.java:2981)
at android.os.Parcel.readValue(Parcel.java:2883)
at android.os.Parcel.readArrayMapInternal(Parcel.java:3261)
at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:292)
at android.os.BaseBundle.unparcel(BaseBundle.java:236)
at android.os.BaseBundle.getString(BaseBundle.java:1160)
at android.content.Intent.getStringExtra(Intent.java:8552)
at com.android.server.wm.ActivityStarter.startActivity(ActivityStarter.java:847)
at com.android.server.wm.ActivityStarter.startActivity(ActivityStarter.java:732)
at com.android.server.wm.ActivityStarter.startActivityMayWait(ActivityStarter.java:2074)
at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:646)
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1717)
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1613)
at com.android.server.wm.ActivityTaskManagerService.startActivity(ActivityTaskManagerService.java:1566)
at android.app.IActivityTaskManager$Stub.onTransact(IActivityTaskManager.java:1746)
at android.os.Binder.execTransactInternal(Binder.java:1056)
at android.os.Binder.execTransact(Binder.java:1029)
Caused by: java.lang.ClassNotFoundException: com.kakao.sdk.auth.AuthCodeClient$resultReceiver$1
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:454)
at android.os.Parcel.readParcelableCreator(Parcel.java:3031)
at android.os.Parcel.readParcelable(Parcel.java:2981)
at android.os.Parcel.readValue(Parcel.java:2883)
at android.os.Parcel.readArrayMapInternal(Parcel.java:3261)
at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:292)
at android.os.BaseBundle.unparcel(BaseBundle.java:236)
at android.os.BaseBundle.getString(BaseBundle.java:1160)
at android.content.Intent.getStringExtra(Intent.java:8552)
at com.android.server.wm.ActivityStarter.startActivity(ActivityStarter.java:847)
at com.android.server.wm.ActivityStarter.startActivity(ActivityStarter.java:732)
at com.android.server.wm.ActivityStarter.startActivityMayWait(ActivityStarter.java:2074)
at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:646)
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1717)
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1613)
at com.android.server.wm.ActivityTaskManagerService.startActivity(ActivityTaskManagerService.java:1566)
at android.app.IActivityTaskManager$Stub.onTransact(IActivityTaskManager.java:1746)
at android.os.Binder.execTransactInternal(Binder.java:1056)
at android.os.Binder.execTransact(Binder.java:1029)

1개의 좋아요

똑같은 이슈가 있습니다. 해결 방법 아시는 분 계신가요? 릴리즈 빌드에서도 잘 되는데 구글 플레이 콘솔에도 내부테스트시 해당 에러가 로그캣에 찍힙니다.

안녕하세요~

혹시 사용하고 계신 SDK 버전이 어떻게 되시는지, 그리고 어떤 메서드를 호출할 때 발생하는지 등 해당 이슈에 대해서 조금 더 상세하게 설명 부탁드려요

1개의 좋아요

네 안녕하세요.

현재 react-native 카카오 로그인 모듈중에 하나인 https://github.com/react-native-seoul/react-native-kakao-login 을 사용중이고,

구글 플레이 콘솔의 내부 테스트에서만 해당 문제가 생겨, 정확히 어떤 함수가 호출이 되었을때 위의 문제가 발생하는지는 디버깅을 하지 못했습니다.

로그인 버튼을 눌렀을때, 아래와 같은 함수가 호출이 되는데 이중에서 위의 문제가 발생하는 것 같습니다.

@ReactMethod
private fun login(promise: Promise) {
    if (UserApiClient.instance.isKakaoTalkLoginAvailable(reactContext)) {
        reactContext.currentActivity?.let {
            UserApiClient.instance.loginWithKakaoTalk(it) { token, error: Throwable? ->
                if (error != null) {
                    promise.reject("RNKakaoLogins", error.message, error)

                    return@loginWithKakaoTalk
                }

                if (token != null) {
                    val (accessToken, accessTokenExpiresAt, refreshToken, refreshTokenExpiresAt, scopes) = token
                    val map = Arguments.createMap()
                    map.putString("accessToken", accessToken)
                    map.putString("refreshToken", refreshToken)
                    map.putString("accessTokenExpiresAt", dateFormat(accessTokenExpiresAt))
                    map.putString("refreshTokenExpiresAt", dateFormat(refreshTokenExpiresAt))
                    val scopeArray = Arguments.createArray()
                    if (scopes != null) {
                        for (scope in scopes) {
                            scopeArray.pushString(scope)
                        }
                    }
                    map.putArray("scopes", scopeArray)
                    promise.resolve(map)
                    return@loginWithKakaoTalk
                }

                promise.reject("RNKakaoLogins", "Token is null")
            }
        }
    } else {
        UserApiClient.instance.loginWithKakaoAccount(reactContext) { token, error: Throwable? ->
            if (error != null) {
                promise.reject("RNKakaoLogins", error.message, error)
                return@loginWithKakaoAccount
            }

            if (token != null) {
                val (accessToken, accessTokenExpiresAt, refreshToken, refreshTokenExpiresAt, scopes) = token
                val map = Arguments.createMap()
                map.putString("accessToken", accessToken)
                map.putString("refreshToken", refreshToken)
                map.putString("accessTokenExpiresAt", dateFormat(accessTokenExpiresAt))
                map.putString("refreshTokenExpiresAt", dateFormat(refreshTokenExpiresAt))
                val scopeArray = Arguments.createArray()
                if (scopes != null) {
                    for (scope in scopes) {
                        scopeArray.pushString(scope)
                    }
                }
                map.putArray("scopes", scopeArray)
                promise.resolve(map)
                return@loginWithKakaoAccount
            }

            promise.reject("RNKakaoLogins", "Token is null")
        }
    }
}

버전은 2.5.0을 사용하고 있습니다.

implementation “com.kakao.sdk:v2-user:2.5.0”

혹시 몰라 카카오 가이드대로 proguard도 추가했지만 똑같이 문제가 발생합니다.

image

  • 추가적으로 LG폰에서는 문제가 없습니다. 특정 삼성 핸드폰에서 발생하는 것 같습니다.
    현재 테스트하고 있는 폰은 갤럭시 s9입니다.

com.kakao.sdk.auth의 클래스를 왜 못찾겠다고 하는지 잘 모르겠습니다. 꼭 한번 확인 부탁드립니다.

감사합니다!

아쉽게도 해당 모듈은 카카오에서 관리하는 모듈이 아니라서 답변을 드리기 어려운 점 양해 부탁드리겠습니다ㅠㅠ

현재 저희가 관리하고 있는 SDK는 카카오 디벨로퍼스 에 가이드되어있는 SDK와 kakao_flutter sdk 입니다.

감사합니다.

"com.kakao.sdk:v2-user:2.5.0"을 지금 사용하고 있습니다. 코드 보시면 전부 kakao sdk 로그인 함수들입니다.

혹시 앱 id가 어떻게 되시나요?

1개의 좋아요

앱 아이디는 599469입니다!

테스트중인 공기계에서 카카오톡이 깔려있는데 로그인이 안된 상태여서 해당 에러가 발생한거 같습니다. 카카오톡을 지우니 로그인이 정상 작동합니다. 감사합니다!!

1개의 좋아요