일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- list map
- build with ai
- ExoPlayer
- android
- getChangePayload
- FastAPI
- exoplayer cache
- ChatGPT
- kotlin collection
- ktor api call
- 유튜브 요약
- Zsh
- 유튜브
- ktor client
- DiffUtil.ItemCallback
- Python
- AWS EC2
- doc2vec
- kotlin list
- 안드로이드
- video caching
- llm
- android ktor
- 스피너
- 시행착오
- android exoplayer
- android custom view
- ListAdapter
- map
- ListAdapter DiffUtil
- Today
- Total
버튼 수집상
[안드로이드] 카카오 로그인 SDK - 앱 로그인 실패시 계정 로그인으로 우회 본문
배경
카카오 로그인 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
'TIL - 안드로이드' 카테고리의 다른 글
[안드로이드] 스피너 커스텀UI 만들기 (두 줄 리스트 스피너) (0) | 2023.05.02 |
---|---|
[안드로이드] 가변적인 json 키를 동일한 클래스로 파싱하기 (0) | 2023.04.18 |
[안드로이드] Invisible된 액티비티가 onStop을 타지 않는 이슈 (0) | 2023.02.22 |
[안드로이드] 액티비티 미리 로드하기 (0) | 2023.01.05 |
[안드로이드] Spinner 아이템 선택 안 하고도 onItemSelectedListener 를 타는 문제 (0) | 2022.12.08 |