멀티 앱 UserApiClient 콜백 관련
SDK 버전 정보
compileSdkVersion
= 33
minSdkVersion
= 26
targetSdkVersion
= 33
디벨로퍼스 앱ID: 926261
문제 상황
문제 발생 지점은 기존 앱에 멀티 앱으로 등록한 앱입니다. 기존 앱을 A, 멀티 앱을 B라고 하면 B는 A의 로그인, 로그아웃, 토큰, 탈퇴 등의 로직을 동일하게 사용중이며, 멀티 앱 가이드라인과 같이 네이티브 앱 키는 A의 키, Manifest
의 scheme
은 B의 커스텀 스킴을 사용중이며, SDK 초기화 함수의 매개변수에도 커스텀 스킴 값을 넘겨주어 사용중입니다.
KakaoSdk.init(
context = this,
appKey = getString(R.string.kakao_native_app_key),
customScheme = getString(R.string.kakao_scheme)
)
<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="@string/kakao_scheme" />
</intent-filter>
</activity>
문제는 UserApiClient
를 탈 때, 내부 메서드는 실행이 되나 callback이 오지 않는다는 점입니다. 아래는 B의 코드이며, A와 동일한 코드를 사용함에도 불구하고 A에서는 잘 실행되던 callback 부분이 실행되지 않는 오류가 있습니다. 멀티 앱 관련 오류인 것 같아서 확인 요청드립니다.
if (socialType == IndivLoginType.KAKAO.jsonValue) {
Timber.d("카카오 로그아웃 실행")
UserApiClient.instance.me { user, error ->
Timber.d("UserApiClient.me called")
if (error != null)
Timber.d("error: ${error.toString()}")
if (user != null) {
Timber.d("사용자 정보 요청 성공")
// 사용자가 로그인 상태일 경우
UserApiClient.instance.logout { logoutError ->
Timber.d("로그아웃 실행")
callback()
}
} else {
Timber.d("사용자 정보 요청 실패")
// 사용자가 로그인 상태가 아닌 경우, 여기서 추가적인 처리나 메시지 출력 등을 할 수 있습니다.
callback()
}
}
}
카카오 로그인 사용자가 로그아웃을 시도할 때, 해당 코드에서 UserApiClient.instance.me
로 정보를 가져온 후 정보가 있으면(로그인이 되어 있으면) 로그아웃 메서드를 불러 로그아웃을 시도했습니다. 디버깅시 UserApiClient.instance.me
이전의 로그는 잘 찍히나("카카오 로그아웃 실행"
), 이후 callback이 오지 않는지 바로 아래의 로그("UserApiClient.me called"
)를 포함한 어떤 로그도 찍히지 않는 것을 확인할 수 있었습니다. 해당 부분이 멀티 앱의 설정 문제인지 확인 부탁드리겠습니다.