초보 개발자입니다
카카오 SDK sample 코드를 보며 익히고있습니다 .
카카오톡과 로그인 연동후 5일 ? 정도 지난후에 재접속하니
Session.getCurrentSession().checkState() 값이 openable 이 뜨면서 로그인 연동이 되지 않더군요…
토큰이 만료되면 자동으로 갱신해주고 정상적으로 token 값을 계속 유지할수있나 싶어서 글을올립니다
sample 코드를 보면 초기화를 Session.getCurrentSession().checkAndImplicitOpen() 로 체크하면서
동시에 세션 오픈을 하는것같은데. 위의 문제는 세션이 openable 일때는 초기화가 되지않는점입니다 .
그래서 Session.getCurrentSession().checkAccessTokenInfo(); 를 사용하여 대체하였는데.
이 코드로 token 만료후 에도 정상적인 서비스 이용이 가능한 코드인지 궁금합니다 .
또한 강제로 token 을 만료시키는 방법이 있는지도 궁금합니다 .
테스트좀해보려구요. token을 만료시키기전까지 기다리기 좀 그래서 그렇습니다 .
일단 토큰을 만료시키려면 로그아웃 api를 호출하시면 되요~
https://developers.kakao.com/docs/android#사용자-관리-로그아웃 여기 api를 참고하시면 될거에요
그리고 token이라는게 accessToken 을 말하는데요. accessToken은 주기가 짧기 때문에 만료가 되기 쉽습니다. 대신 refreshToken값으로 accessToken을 갱신시키기 때문에 refreshToken값도 만료가 되기 전에는 세션이 끊기지 않는다고 보시면되요~
때문에 sample에서처럼 Session.getCurrentSession().checkAndImplicitOpen() 를 사용하신다면 refreshToken값이 만료가 되기까진 token값이 유지된다고 보시면 되요~
refreshToken까지 만료가 되었다면 SessionCallback의 onSessionOpenFailed()로 들어오게 됩니다.
답변 감사합니다 . 하나더 질문하겠습니다 …
refreshToken 까지 만료가 되었다면 onSessionOpenFailed() 로 들어오게 된다고하셨는데…
그러면 refreshToken 까지 만료후 onSessionOpenFailed() 메서드에서 다시 토큰을 갱신하고
SessionCallback의 onSessionOpened 메서드로 올수있도록 하는 방법은 없을까요 …
onSessionOpenFailed() 메서드에서 Session.getCurrentSession().implicitOpen(); 파면은 내부적으로 토큰을 재 갱신후 콜백을 SessionCallback의 onSessionOpened 로 받을수있을까요 .
제가하고싶은것은 accessToken 이 만료되지않고 무한히 유지하고싶습니다. 만료되었다면 재갱신후에 onSessionOpend 메서드로 오고싶구요 …
자동으로 할수는 없구요. 로그인 버튼을 통해서 다시 재로그인을 해주셔야해요~ 그러기 위해선 카톡, 스토리, id/pw를 통해 로그인을 해야하기 때문에 자동으론 안됩니다.
무한히 유지를 하기 위해선 사용자가 주기적으로 앱에 진입을 해서 api를 call해야하는데 사용자가 안들어온다면 방법이 없죠.
단, 통밥으로 android service같은걸 만들어서 주기적으로 kakao api를 호출하여 갱신시키는 방법이 있긴하겠네요^^
관리자님 답글 감사합니다. 많은 도움이 되었네요 !