SDK와 REST API 둘 다 테스트를 해봤는데요.
퇴근하고 다음 날 아침(12시간 정도가 지난 후)에 확인해보면 invalid_grant가 떠서 자동로그인이 되지 않습니다.
accessToken과 refreshToken은 SharedPreference로 저장하여서 앱 내에 저장하고 있는데요.
앱을 켜면 무조건 토큰 갱신 REST API 사용하여 진행하도록 구현을 해놨는데,
3시간 내에는 잘 동작하지만, 아마 3시간 초과가 되면invalid_grant이 떠서 진행이 안 되는 것 같습니다… 정확한 에러는 다음과 같습니다.
{"error":"invalid_grant","error_description":"expired_or_invalid_refresh_token","error_code":"KOE322"}
1. 프로필 관련 동의 항목을 철회하거나 한 적이 없습니다.
참고:
https://devtalk.kakao.com/t/topic/116370/2
2. 1시간 내에 갱신을 하더라도 아래의 형태로 refresh_token, refresh_token_expires_in이 내려옵니다.
{
"access_token": "KCQX1zyIcFMpYF-6GU3v99CO0LhkulRq0O5JYgo9cpgAAAF_LsbRqg",
"token_type": "bearer",
"refresh_token": "mGJtgt7WwmqMhcXiPe0EItPGdHtFS3OChwtOlgo9cpgAAAF_LsbRqQ",
"expires_in": 43199,
"refresh_token_expires_in": 5183999
}
refresh_token 및 refresh_token_expires_in 유무를 체크하여, 1달 내에 토큰 갱신 시에 빈 refresh token을 요청하지 않고 기존 refresh token으로 요청하도록 따로 구현을 해봤음에도 불구하고 같은 에러가 뜨고, 새로 갱신을 받은 refresh_token로 요청을 해도 같은 현상이 발생합니다.
참고:
https://devtalk.kakao.com/t/refresh-token/121421/2
저희 앱은 한 번 로그인을 하면 몇 달이건 계속 로그인 상태가 유지가 되어야하는데요…(재로그인으로 유도를 하란 답변이 많던데 저희는 그렇게 하면 안되고 사용자가 인지하지 못하게 자동로그인으로 처리해야합니다. 마치 카카오톡을 몇 주 뒤 로그인을 해도 계속 로그인 되어있는 것처럼요.) 현재 따로 logout 혹은 unlink 등으로 Refresh 토큰을 만료시키거나 하지 않고 있습니다…
Refersh 토큰은 만료기간이 2달인데 왜 이런 현상이 발생하는 건가요?