Refresh 토큰 갱신 문제

안드로이드 앱에서 사용자가 카카톡계정에서 임의로 탈퇴후 재가입 하는 도중에 expired_or_invalid_refresh_token 라는 에러가 나면서 로그인 이 되지않는현상이 있는데요. 조금 기다렸다가 앱을 재설치하니 다시 로그인이 잘되는 이슈가있습니다…

사내 내부망에서 테스트하였을때 발생하였습니다. 외부에 공개되어있는 public 서버에서는 다시 잘 동작하였구요.

간헐적으로 이런 문제가 발생하는것 같은데 정확히 언제 발생하고 어떻게 해결해야하는지 도움 부탁드립니다.

또한 사용자가 언제든 임의로 탈퇴(카카오계정 연결해제)할 수 있을것같은데 이럴경우 어떤 작업을 해줘야하는지 어떤 레페런스를 봐야하는지 궁금합니다.

@jjgod0124 우선 refresh token 만료 에러의 경우 클라에서는 다시 로그인창으로 유도를 해야 합니다. 에러처리나 유도가 잘 안될경우 사용자는 로그인 오류로 생각여겨지게 될 수 있어서요. 또한 사용자가 탈퇴(연결끊기 시)시 3rd로 콜백을 호출해주는 기능이 있어요. 개발자 웹사이트의 연결끊기 메뉴에서 설정 가능합니다. 아래의 화면 참고

이 콜백을 받게 되면 서비스내에서 해당 사용자에 대한 정보를 모두 삭제 해 주셔야 하고, 탈퇴 처리를 잘 마무리 해 주시면 될것 같아요.

답변이 되었는지 자신이 없네요 ㅠㅜ.

1개의 좋아요

답변 감사합니다. 클라에서 딱히 할 수 있는일이 없다는말이군요… 이게 오류가 처음 한번 만 뜬게 아니라 연속으로 3번 4번 시도해도 같은 오류였어서요. ㅠㅠ

@jjgod0124 네 ㅠㅜ 해당 계정이 탈퇴되거나 앱 연결끊기 등을 하면 서버에 유효한 토큰을 모두 clear해서 클라에서는 에러를 겪을 수밖에 없어요. 이때 에러로 안여기고 최대한 자연스럽게 로그인창으로 다시 유도하는것이 최선일것 같아요.

1개의 좋아요

정성스러운 답변 감사합니다.

1개의 좋아요

시간이 조금 지났지만 다시 한 번 질문드려요.

토큰이 clear된후 사용자가 다시 로그인을 시도할때 신규로 토큰이 발급되는시간은 얼마나 걸리는건가요??

일정 시간동안 expired_or_invalid_refresh_token 받으니 딱히 아무것도 할 수있는게 없어서요…

로그인 화면으로 안내하고있지만 누르면 해당상황 반복이니 답이 없는것 같아요…

@jjgod0124 아 해당 질문을 놓쳤었네요. 늦게 답변을 드려 죄송합니다.
이상하네요. SDK를 사용하시면 SDK내에서 자동으로 토큰을 갱신을 해 주거든요. 대신에 SDK를 이용해서 user/me , 사용자 정보 요청 같은 API를 호출해줘야 합니다. 보통 앱을 실행하면 사용자 정보를 얻기 위해 해당 API를 호출합니다. 이럴경우 토큰 만료, 갱신 신경 쓰실 필요없이 토큰이 자동 갱신이 되어 해당 상황이 일어나지 않아요.

다만, 사용자가 장기간(약 1달) 사용을 안하고 접속을 하면 토큰이 만료되기 때문에 해당 현상이 일어날 시 로그인으로 유도를 해야 하는 것이구요.

내부적으로 크게 토큰은 두가지가 있어요. access token으로 만료 주기가 짧은 토큰, refresh token으로 만료 주기가 긴 토큰. access token이 만료되면 refresh token으로 SDK에서 access token을 주기적으로 갱신합니다. 단 사용성이 있을때요.
만료 주기는 native platform 기준으로 access token은 약 12시간, refresh token은 약 1달 정도이구요, 이 만료 주기는 바뀔 수 있어요.