카카오 계정으로 로그인에서 로그인이 되지 않습니다

문의 시 사용하시는 SDK 버전 정보를 알려주세요. : 2.11.0

카카오톡으로 로그인과 카카오 계정으로 로그인 두가지 방법을 같이 사용합니다.
가이드 페이지처럼 카카오톡이 깔려있으면 카카오톡으로 로그인이 먼저뜨고 뒤로가기 누르면 카카오 계정으로 로그인 하는 방식을 적용했습니다.
우선 문제사항은 카카오톡 설치 여부에 관계없이 카카오 계정으로 로그인을 시도하면 동의 화면까지 뜨고 동의 체크 후 로그인 버튼을 눌렀을 때 아무런 일도 일어나지 않는 것입니다.
비슷한 문제들을 찾아보니 RedirectUrl 을 적용하라는 답변이 많은데 적용되어있고 처음엔 카카오톡, 카카오 계정 모두 로그인이 잘 되다가 어느 순간부터 카카오 계정으로 로그인만 되지 않습니다. 한 기기에서 확인 후 다른 기기에서 확인 해보았는데 동일한 현상이 발생합니다. faq에서는 뒤로가기를 하면 로그인이 정상적으로 진행 될 것이다라는 말도 보았지만 그러지 않았고, 앱 종료 후 다시 시도하면 여전히 동의창에서 로그인 버튼이 먹통입니다(ripple 효과는 일어납니다.) 이러다가도 카카오톡으로 로그인을 하면 정상 로그인이 됩니다.

안녕하세요.

확인을 위해 앱 ID 부탁드립니다.


앱ID
https://developers.kakao.com/ 의 내 애플리케이션>앱 설정>요약 정보 : 기본정보에 있는 앱 ID
숫자로된 ID 입니다

ex) 123456

796157 입니다

image
세 디바이스로 확인 중인데, 어제 확인했던 두 디바이스는 여전히 같은 상황(무반응)이고
오늘 다른 디바이스로 확인한 경우는 로그인 버튼을 누르면 위 사진 처럼 뜹니다(카톡 깔려있는 상태에서 카톡으로 로그인 창에서 뒤로가기 후 계정으로 로그인 창에서 로그인 버튼 클릭한 후 뜨는 화면).

아래 문서의 Redirect URI 설정이 정상 처리되어 있으신지 확인 부탁드립니다.

Android | Kakao Developers Android

AndroidManifest.xml

        <activity
            android:name="com.kakao.sdk.auth.AuthCodeHandlerActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data
                    android:host="oauth"
                    android:scheme="kakao${kakaoNativeKey}" />
            </intent-filter>
        </activity>

build.gradle.kts

val keystorePropertiesFile = rootProject.file("private.properties")
val privateProperties = Properties()
privateProperties.load(keystorePropertiesFile.inputStream())

android {
    ...
    defaultConfig {
        applicationId = Apps.basePackage
        minSdk = Apps.minSdk
        targetSdk = Apps.targetSdk
        versionCode = Apps.versionCode
        versionName = Apps.versionName

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    }

    signingConfigs {
        create("releaseWithSignedKey") {
            storeFile = file(privateProperties.getProperty("storeFile"))
            storePassword = privateProperties.getProperty("storePassword")
            keyAlias = privateProperties.getProperty("keyAlias")
            keyPassword = privateProperties.getProperty("keyPassword")
        }
    }

    buildTypes {
        debug {
            versionNameSuffix = "-debug"
            buildConfigField("String", "BASE_SERVER_URL", "\"${Apps.baseDevServerUrl}\"")
        }
        release {
            isMinifyEnabled = false
            proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
            signingConfig = signingConfigs.getByName("releaseWithSignedKey")
            buildConfigField("String", "BASE_SERVER_URL", "\"${Apps.baseServerUrl}\"")
        }
        ...
    }

    flavorDimensions += "store"
    productFlavors {
        create("one") {
            dimension = "store"
            applicationIdSuffix = ".one"
            versionNameSuffix = "-one"
            manifestPlaceholders.apply {
                put("kakaoNativeKey", privateProperties.getProperty("kakaoNativeKey_one").toString())
            }
            buildConfigField("String", "KAKAO_NATIVE_KEY", privateProperties.getProperty("kakaoNativeKey_one"))
        }
        create("play") {
            dimension = "store"
            versionNameSuffix = "-play"
            manifestPlaceholders.apply {
                put("kakaoNativeKey", privateProperties.getProperty("kakaoNativeKey_play"))
            }
            buildConfigField("String", "KAKAO_NATIVE_KEY", privateProperties.getProperty("kakaoNativeKey_play"))
        }
    }
    ...
}

private.properties

kakaoNativeKey_one="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
kakaoNativeKey_play="bbbbbbbbbbbbbbbbbbbbbbbbbbbbb"

위처럼 적용중입니다. 테스트중인 빌드타입, flavor 무관하게 동일 증상입니다.

class App  : Application() {
    override fun onCreate() {
        super.onCreate()
        ...
        KakaoSdk.init(this, BuildConfig.KAKAO_NATIVE_KEY)
    }
}

추가로 Application 단 초기화 되어있습니다.

구현상 문제는 없어 보이십니다.

아래 코드에서 kakaoNativeKey를 직접 할당해서 테스트 해보시겠어요?

어라… 직접 할당하니 됩니다.

일단 위 캡쳐 보시면 앱키 제대로 들어가 있는 것으로 보이는데…(위 캡쳐는 직접 할당 전에 발생한 상황입니다.)

위 캡쳐 발생한 상황은 개발중인 앱의 예전 버전과 충돌나서 발생한 문제인듯 합니다. 예전 버전 다 지우고 직접할당하니 해결되었어요.

다만 스토어별 분기 떄문에 직접 할당이 어려운데, 이 경우는 어떻게 해야하나요…?
캡쳐에 보이는 키에는 공백이나 다른 문자가 보이지는 않아서 뭐가 문제인지 모르겠네요;;

 KakaoSdk.init(this, BuildConfig.KAKAO_NATIVE_KEY)

위 코드가 동작 한다면, buildConfigField 는 정상 동작하는 것으로 보입니다

manifestPlaceholders["kakaoNativeKey"] = privateProperties.getProperty("kakaoNativeKey_one")

이런 식으로 수정해도 동작이 안될까요?


그리고 다른 이야기지만 스토어 별로 앱을 각각 사용하시면 동일한 사용자라도 각각 앱에 새로 가입하게 됩니다. 이점 인지 되셨을까요?

적어주신대로 바꾸고 적용해보았는데 동일합니다.
동의 및 로그인 창 유지된 채로 상단 타이틀바에 "웹페이지 불러오는 중"으로만 바뀌고 멈춰있습니다.

스토어별 패키지 분리에 따른 문제는 인지하고 있고 어쩌다 보니 분리하게 되었는데 추후 상황에 따라 통합할 가능성이 있습니다. 의견 감사합니다 :slight_smile: