com.kakao.sdk:v2-user:2.19.0
디벨로퍼 앱 ID : ID 1011774
안녕하세요?
Kakao login 을 사용하여 idToken 를 얻은후 backend server 에 API 호출시 해당 idToken를 보내서 Key 가 유효한지 검증하도록 구성하였습니다
사용 언어는 Kotlin 입니다
UserApiClient.instance.loginWithKakaoTalk(context)
을 사용하여
token 을 얻은후 token.idToken 을 얻을수 있습니다
그이후 App 실행시
if (AuthApiClient.instance.hasToken()) {
UserApiClient.instance.accessTokenInfo { accessTokenInfo, error ->
}
}
로 Token 유효성을 Check 하여 Token이 유효한 경우
val oauthToken = TokenManagerProvider.instance.manager.getToken()
이렇게 oautjToken 을 받아와 oauthToken?.idToken 를 확인해 보면 null 로 표시 됩니다
기존에 받아 놓은 idToken 을 그대로 사용하면
Backend server 에서 https://kauth.kakao.com/oauth/tokeninfo
로 검증 했을때 기간이 만료 된 것으로 나옵니다
idToken 을 가져오는 방법이 잘못 된 것일까요 ?
감사합니다
안녕하세요
확인해본 결과 서버에서 발급된 토큰을 TokenManager로 저장하는 과정에서 idToken이 누락되는 버그가 있었네요ㅠㅠ
불편을 끼쳐드려 죄송합니다.
해당 부분은 수정해서 빠른 시일 내에 배포할 수 있도록 하겠습니다.
SDK의 TokenManager는 별도로 커스텀해서 사용할 수 있도록 되어있는데요, 조금 번거로우시더라도 배포되기 전까지는 아래의 커스텀 TokenManager를 등록해서 사용 부탁드리겠습니다. (기존 SDK의 TokenManager에서 이슈 부분 수정한 코드입니다)
class CustomTokenManager(
private val appCache: PersistentKVStore = SharedPrefsWrapper(
KakaoSdk.applicationContextInfo.sharedPreferences
),
private val encryptor: Cipher = AESCipher(),
) : TokenManageable {
private var currentToken: OAuthToken?
init {
currentToken = appCache.getString(tokenKey)?.let {
try {
KakaoJson.fromJson<OAuthToken>(
encryptor.decrypt(it),
OAuthToken::class.java
)
} catch (e: Throwable) {
SdkLog.e(e)
null
}
}
}
override fun getToken(): OAuthToken? = currentToken
@Synchronized
override fun setToken(token: OAuthToken) {
val newToken = token.copy()
try {
appCache.putString(tokenKey, encryptor.encrypt(KakaoJson.toJson(newToken))).commit()
} catch (e: Throwable) {
SdkLog.e(e)
}
currentToken = newToken
}
override fun clear() {
currentToken = null
appCache.remove(tokenKey).commit()
}
companion object {
const val tokenKey = "com.kakao.sdk.oauth_token"
}
}
TokenManagerProvider.instance.manager = CustomTokenManager()
안녕하세요
내부 사정으로 인해 배포가 늦어졌네요… 제보주신 이슈 수정된 2.20.0 버전 배포되었습니다.
2.20.0 버전 이상부터는 제가 전달해드린 가이드 코드는 사용하지 않으셔도 정상적으로 동작합니다.
제보주셔서 다시 한번 감사합니다