네 토큰인증이 필요한 api들 (예: UserApi.me,…등 )을 호출했을때 엑세스토큰 만료가 됬을경우
엑세스토큰 만료 에러(.InvalidAccessToken)가 발생하게 됩니다.
sdk 내부에서 이 에러가 발생되면 원래 api 콜은 pending 상태로 큐에 넣고
토큰갱신 refreshAccessToken api를 호출하게되며 토큰갱신에 성공하면 pending됬던 원래 api콜을 이어서 하게 됩니다.
즉, 갱신이 필요할경우 자동으로 갱신해서 sdk 내부에 가지고 있게되며
엑세스토큰 갱신을 별도로 신경쓰실 필요가 없습니다.
답변 감사합니다.
v2에서는 기존의 자동갱신 기능이 아예 사라진 것으로 이해하면 되겠네요.
액세스토큰 갱신을 별도로 신경쓰실 필요가 없다고 하셨는데 제 앱 로직이 이상한 걸까요?
제 앱에서는 카카오 로그인을 이용하는 경우 초기 로그인 과정에서만 카카오 SDK api를 쓰고
그 이후에는 로그인 후 로컬 캐시로 저장된 액세스토큰만 사용합니다. 액세스토큰은 매우 빈번하게 쓰이기 때문에 속도 문제로 로컬에 저장된 값을 사용합니다. (카카오 SDK api가 안쓰이기 때문에 액세스 토큰은 자동으로 갱신되지 않음)
이 액세스토큰은 제 앱 서버로 전송되어 믿을만한 사용자인지 검사하는데 쓰입니다.
제 앱 서버에선 전달받은 액세스토큰을 카카오 서버 end point로 보내 이 토큰이 유효한지 검사하고 유효하다면…
특정 동작을 수행하도록 되어있습니다.(아이템 추가, 삭제 등…)
이런 경우에는 액세스 토큰이 갱신되지 않습니다.
제 생각에는 카카오 로그인을 이용하는 다른 앱들도 비슷하게 동작할 것 같은데요… 음.
제가 잘못알고 있는 걸까요?
그래서 저는 토큰 갱신을 위해
AppDelegates의
func applicationDidBecomeActive(_ application: UIApplication) 함수를 통해
백그라운드에서 앱으로 화면이 전환될 때마다… 카카오 SDK api를 불러 토큰이 갱신되게 하려고 합니다.
이렇게 하면 되겠죠? ㅎㅎ
여기에 할 질문이 아닌 것도 같지만
제 생각에는 제 앱이 동작하는 방식이 보편적인 것 같고…
다른 분들에게도 도움이 되지 않을까 해서 질문 남깁니다.