세션 토큰 갱신에 대한 이슈 (handleDidBecomeActive 관련) 질문입니다

안녕하세요.

현재 iOS 앱에서 카카오 로그인 기능을 사용하고 있는데요

토큰 자동 갱신이 되지 않는 이슈가 있습니다.

코드 간략하게 첨부합니다.

func applicationDidBecomeActive(application: UIApplication)
{

KOSession.sharedSession().automaticPeriodicRefresh = true
KOSession.handleDidBecomeActive()

if KOSession.sharedSession().isOpen() {

// KOSession.sharedSession().accessToken 을 서버로 전송하여 검증처리
// 일정시간 이후 토큰이 만료되면 유효하지 않은 accessToken이 됨
serverLogin(…, KOSession.sharedSession().accessToken, …)

}

}

handleDidBecomeActive 를 호출하고나서 토큰 갱신이 될때까지 delay가 있거나
카카오에 따로 콜을 날릴때 자동 갱신이 되도록 동작하거나 하는게 아닌가 짐작되는데
혹시 맞다면 토큰 갱신 후 callback 을 받을 수 있는 방법이 있는지 궁금합니다.

1개의 좋아요

안녕하세요?

현재 토큰 갱신에 대한 콜백을 제공하고 있지 않습니다.
콜백에서 어떤 처리를 하려고 하시는건지 여쭤봐도 될까요?

안녕하세요 답변 감사합니다.

위에 첨부한 코드에 적었듯이 앱에서 저희 서버로 토큰을 전송하여 토큰의 유효성 검증을 하고 로그인처리를 하게 됩니다.

현재상태로는 토큰 갱신여부를 알지 못하고 만료된 토큰을 보내서 로그인을 실패하게 되는데요…

강제로 갱신해주는 방법은 어떤게 있을까요?

그냥 카카오 api 콜을 한번 날려주면 갱신되나요?

@sysadmin1 보통 API call을 하면 SDK내부적으로 자동 갱신을 해 주는데요, 앱실행시나 로그인시, 중요한 시점에 내정보 요청 등의 API 호출을 권장 드립니다(권장). 서버 side에서도 토큰 갱신을 할 수는 있는데요, 이를 위해서는 refresh token을 이용하시면 되는데, refresh token또한 만료가 될 수 있기때문에 아마도 관리하시기 어려울 수 있을것 같아요.

이외에도 KOSession.h 에 보면 automaticPeriodicRefresh 란 flag도 있는데요,
이 옵션을 설정하시면 API call을 하지 않더라도 SDK내에서 background로 자동 갱신을 합니다.

추가적으로 서버 사이드에서 토큰 만료되었는지의 검사는

토큰 유효성 검사

을 통해 할 수 있어요~

또한 서버 사이드 갱신의 경우

사용자 토큰 갱신

을 참고하실수도 있습니다.