Android/iOS 토큰 갱신은 어떤 정확히 함수를 써야 하나요?

문의 시, 사용하시는 SDK 버전 정보와 디벨로퍼스 앱ID를 알려주세요.


토큰정보를 갱신하여 로그인 자체를 줄이려는 개선을 진행하고 있습니다.

SDK 를 확인해보면

  • UserApiClient.accessTokenInfo
  • AuthApiClient.refreshToken
    두개가 있던데,
    accessTokenInfo는 액세스 토큰만 갱신하고,
    refreshToken는 액세스, 리프레시 토큰 둘다 갱신을 하는건가요?

사용자가 60일 이후에 리프레시 만료가 되면 다시 로그인을 해야 하는데, 위 내용이 맞다면 해당 프로세스도 간소화 하고 싶어 AuthApiClient.refreshToken를 써도 되는지 문의드립니다.

안녕하세요.

UserApiClient.accessTokenInfo 사용 부탁드립니다.
토큰 존재 여부 확인하기 사용 시, 토큰 갱신이 필요한 경우 자동으로 갱신되며, 갱신 가능 시점에 도달한 경우 refresh token 또한 같이 갱신됩니다.

이 메소드의 결과가 error인 경우, 사용자가 연결을 끊었거나, refresh token 만료 이후 다시 서비스를 사용하게 된 경우 이므로 이 때는 다시 로그인 흐름으로 진행하시면 됩니다.

2개의 좋아요

안녕하세요

토큰 만료 시간은 가이드 참고 부탁드립니다.

말씀주신 내용에서 accessTokenInfo()는 실제로는 현재 발급된 AccessToken (이하 AT)에 대한 정보 확인하는 API이고, refreshToken()이 토큰 (AT, RefreshToken (이하 RT))을 갱신하는 API 입니다.

SDK에서는 토큰을 자동으로 갱신하고 있는데요, 토큰이 필요한 API를 호출했을 때 AT가 만료되었고 RT는 만료되지 않은 상태라면 SDK 내부적으로 refreshToken()을 호출해서 토큰을 갱신하고, 갱신된 토큰으로 API를 다시 호출합니다.
그런데 만약 refreshToken()을 호출했을 때 RT의 만료 시간이 한달 이내로 남은 상태라면 AT와 RT가 모두 갱신됩니다. 따라서 유저가 앱에 로그아웃 또는 연결 해제했거나, 60일 이상 토큰이 필요한 카카오API를 호출하지 않은 경우를 제외하고는 토큰이 만료되지 않습니다.

바로 윗 댓글의 우디가 답변해주신 내용처럼 accessTokenInfo() 를 호출해서 현재 저장된 토큰이 유효한지 확인 후 유효하다면 로그인 상태로 처리하고, 유효하지 않다면 유저에게 로그인을 요청하도록 동선을 구성하시면 될 것 같습니다.

관련해서 샘플 코드 및 가이드도 제공하고 있으니 참고 부탁드립니다.

2개의 좋아요

인터셉터에 말씀하신 내용 있는것 확인했습니다. iOS도 동일한 로직으로 만들어져있어 accessTokenInfo 호출하면 되는거죠?

네 Android, iOS SDK는 동일한 스펙으로 구현되어있습니다