Ios token값이 유효하지 않다고 나옵니다

하루전에 카카오로 로그인을 하고나서 저희 서버로 로그인정보를 넘겨 줍니다. 이떄는 문제가 없는데
다름날 아마도 토큰값이 만료되었을 경우 같은데요
토큰을 다시 저희 서버로 전송했을 경우 this access token does not exist 이렇게 나오게 됩니다.
앱에서는 따로 토큰을 갱신 같은걸 해줄필요가 없다는 내용을 본것같은데요 왜 이런 현상이 나오는지 알수 있을까요?

라고 하셨는데요. iOS앱에서 발급받은 토큰을 서버로 다시 전송하시고 서버에서 kapi 서버를 호출하시는건가요?

네 카카오 정보로 제앱에 로그인기능을 사용하는데
서버에서 카카오 API를 통해서 토큰값을 체크를 하면 위와 같은 현상이 발행됩니다.
서버에 전송되는 토큰은 [KOSession sharedSession].accessToken; 값을 사용합니다.
그리고 앱을 런칭할때 [[KOSession sharedSession]setAutomaticPeriodicRefresh:YES]; 이옵션도 사용하고 있습니다.

iOS SDK에서 토큰값 갱신이 필요할때 SDK 에서 토큰 갱신을 해주고 있기 때문에 갱신이 필요없는 것처럼 보입니다.(실제로는 갱신이 일어나고 있는거죠)
서버에서 token을 API호출을 하신다면 만료시 갱신처리를 해주셔야 합니다.

서버에서 호출하는 API “사용자 토큰 유효성 검사 및 정보 얻기” /v1/user/access_token_info 이 API만 호출해서 유효성 검사만하는데
이떄 만료 갱신처리를 해줘야한다는 말씀인가요?

서버에서도 API 를 호출하고 앱도 SDK를 통해서 API를 사용하신다는거죠?
그렇다면 SDK에서는 토큰 만료시 자동으로 갱신이 이루어지기 때문에 서버에 전달된 (오래된) 토큰은 invalid 할 가능성이 높네요.
서버에서 유효성 체크를 따로 하는 이유가 있을까요?

토큰을 앱에 따로 저장하지 않고 서버에 전송할때는 [KOSession sharedSession].accessToken; 이걸 통해서 전송하는데 이값이 오래된 토큰이 될수 있나요?

[KOSession sharedSession].accessToken 을 통해 얻은값이 언제 만들어졌느냐에 따라서 오래된 토큰이 될 수도 있습니다.

라고 하셨으니 그럴 것 같네요.

이럴 경우에는 어떻게 하면 되나요?
앱에서 로그인이된 상태에서 토큰값을 갱신할수있는 방법은 없나요?

"앱에서 따로 토큰 갱신을 해줄 필요가 없다"는건 앱에 있는 KOSession.accessToken 항상 유효하다는 걸 의미하지 않습니다.
토큰은 시간이 지나면 만료가 되고 SDK없이 직접 API 를 호출하실 경우 토큰갱신 로직을 구현해주셔야 하지만
SDK를 사용할 경우 만료된 토큰 갱신을 내부에서 자동으로 처리하기 때문에 별도의 갱신이 필요 없는 것입니다.

서버에서 유효한 토큰을 알고 싶으시다면 갱신 로직을 직접 구현하시면서 서버-클라이언트간 싱크를 맞추셔야할 것 같습니다.

감사합니다.

1개의 좋아요

단순 보안과 유저 확인을 하고자 유효성 검사를 합니다.

@anon80289846
실수로 새 답글을 달지 않고 위의 글을 수정해버렸네요ㅠ 위쪽 글 참조바랍니다~

@anon80289846 참고로 SDK에서 토큰의 경우 자동 갱신을 해주는데요, 특별한 옵션을 주지 않는 한 보통 어떤 API등 하나가 호출될때 갱신되게 됩니다. 예를들어 가장간단한 accessTokenInfoTaskWithCompletionHandler(토큰 인포) 또는 가장 기본적인 meTaskWithCompletionHandler API등을 주기적으로 또는 앱이 실행될때 등 호출해 주시면 자동으로 갱신되는 효과가 있기에 별도 갱신이 필요 없다고 표현해 드리고 있어요~

따라서 앱에서 앱이 실행될 때 meTaskWith를 통해 해당 사용자 정보를 얻고, 그 정보와 토큰을 3rd 서버로 넘기고 서버에서는 access_token_info를 호출한다면, 정상 케이스에서는 토큰이 만료가 되지 않을꺼에요. 왜냐 앱에서 meTaskWith호출시 이미 토큰 갱신 또는 에러(만료 등)처리가 될테니까요~

현재 KOToken.h 에 보면 accessToken 만료 시간은 12시간으로 나와있는데, 12시간이 지난 후에는 api를 호출하더라도 토큰갱신이 이루어지지 않는다는 얘기인가요? 예를 들면 사용자가 앱을 1주일에 한번만 사용한다고 하면 토큰을 갱신할 방법은 없는 거겠네요? 맞나요?