Kakao SDK v2에서 accessToken 갱신 문의

안녕하세요.

카카오 SDK v2에서 accessToken이 어떻게 갱신되는지 정보좀 알 수 있을까요?

v1에서는

  1. KOSession.shared()?.isAutomaticPeriodicRefresh = true 코드를 사용한 주기적 갱신(타이머?)
  2. 카카오 SDK api 호출 시 필요하면 갱신

으로 알고 있는데요
v2에서는 어떤가요?
v1에서 타이머를 이용한 갱신이 잠재적 문제점이 있다하여… v2로 바꾸고 있는데
v2에서는 액세스 토큰 갱신이 어떻게 이뤄지는지 궁금합니다.

*제가 참고한 글

네 토큰인증이 필요한 api들 (예: UserApi.me,…등 )을 호출했을때 엑세스토큰 만료가 됬을경우
엑세스토큰 만료 에러(.InvalidAccessToken)가 발생하게 됩니다.
sdk 내부에서 이 에러가 발생되면 원래 api 콜은 pending 상태로 큐에 넣고
토큰갱신 refreshAccessToken api를 호출하게되며 토큰갱신에 성공하면 pending됬던 원래 api콜을 이어서 하게 됩니다.

즉, 갱신이 필요할경우 자동으로 갱신해서 sdk 내부에 가지고 있게되며
엑세스토큰 갱신을 별도로 신경쓰실 필요가 없습니다.

1개의 좋아요

답변 감사합니다.
v2에서는 기존의 자동갱신 기능이 아예 사라진 것으로 이해하면 되겠네요.

액세스토큰 갱신을 별도로 신경쓰실 필요가 없다고 하셨는데 제 앱 로직이 이상한 걸까요?

제 앱에서는 카카오 로그인을 이용하는 경우 초기 로그인 과정에서만 카카오 SDK api를 쓰고
그 이후에는 로그인 후 로컬 캐시로 저장된 액세스토큰만 사용합니다. 액세스토큰은 매우 빈번하게 쓰이기 때문에 속도 문제로 로컬에 저장된 값을 사용합니다. (카카오 SDK api가 안쓰이기 때문에 액세스 토큰은 자동으로 갱신되지 않음)

이 액세스토큰은 제 앱 서버로 전송되어 믿을만한 사용자인지 검사하는데 쓰입니다.
제 앱 서버에선 전달받은 액세스토큰을 카카오 서버 end point로 보내 이 토큰이 유효한지 검사하고 유효하다면…
특정 동작을 수행하도록 되어있습니다.(아이템 추가, 삭제 등…)

이런 경우에는 액세스 토큰이 갱신되지 않습니다.

제 생각에는 카카오 로그인을 이용하는 다른 앱들도 비슷하게 동작할 것 같은데요… 음.
제가 잘못알고 있는 걸까요?

그래서 저는 토큰 갱신을 위해
AppDelegates의
func applicationDidBecomeActive(_ application: UIApplication) 함수를 통해
백그라운드에서 앱으로 화면이 전환될 때마다… 카카오 SDK api를 불러 토큰이 갱신되게 하려고 합니다.

이렇게 하면 되겠죠? ㅎㅎ

여기에 할 질문이 아닌 것도 같지만
제 생각에는 제 앱이 동작하는 방식이 보편적인 것 같고…
다른 분들에게도 도움이 되지 않을까 해서 질문 남깁니다.

혹시 제가 잘못알고 있는 사실이 있다면 알려주세요.

감사합니다.

엑세스토큰은 사용기간이 무한하지 않기때문에 주기적으로 갱신을 해야합니다. 이렇게 쓰시면 아니됩니다.

직접 엑세스토큰을 갱신하든지 sdk내부 갱신을 이용하든지 두가지 방법중 하나를 쓰셔야 합니다.
참고로 직접 갱신은 더 많은 노력이 필요합니다.

네. 어느 위치에서 어떤 타이밍에 할지는 개발자분께서 정하시면 됩니다.
엑세스토큰을 따로 관리한다면
사용하기전 적절한 타이밍에 토큰갱신하는 로직은 필수로 있어야 합니다.

토큰만을 갱신하려할 경우 주기적 호출로는 accessTokenInfo api를 추천드립니다.

1개의 좋아요

답변 너무 감사합니다. :grinning:

1개의 좋아요