본문 바로가기
카카오 REST API & SDK/카카오 로그인

카카오 로그인 액세스 토큰과 리프레시 토큰

by kakao-TAM 2021. 6. 15.

가이드

공통 : 토큰 만료 기간

REST API : 토큰 받기, 토큰 정보 보기, 토큰 갱신 하기

JS SDK : 로그인, 토큰 할당, 팝업방식 로그인

Android SDK : 토큰 존재 여부 확인하기, 토큰 정보 보기

iOS SDK : 토큰 존재 여부 확인하기토큰 정보 보기

 

 

Android, iOS SDK

1. 토큰 존재 여부 확인하기는 토큰 발급 여부를 확인하지만, 현재 사용자가 로그인 상태임을 보장하지 않습니다. (만료된 토큰일 수 있음)

2. 토큰 정보 보기다양한 사용자 정보 없이 가볍게 토큰의 유효성을 체크하는 용도로 추천. 액세스 토큰이 만료된 경우 자동으로 갱신된 새로운 액세스 토큰 정보 반환합니다.

토큰 만료 기간

Token Type Role Valid 폐기
Access Token 사용자를 인증합니다. 토큰 만료 기간
Android, iOS : 12시간

JavaScript: 2 시간
REST API : 6시간
SDK에 저장된 토큰은 logout, unlink 를 한경우 토큰 만료기간과 상관 없이 삭제 됩니다. 

사용자가 동일한 디벨로퍼스앱에서 발급받은 토큰이 많지 않다면 재발급해도, 기존 액세스토큰 만료처리는 하고있지 않습니다.
Refresh Token 토큰 갱신 하기
일정 기간 동안 다시 인증 절차를 거치지 않고도
액세스 토큰 발급을 받을 수 있게 해 줍니다.
2달
유효기간 1달 남은 시점부터 갱신 가능
Refresh Token의 남은 유효기간이 1개월 이하인 경우, 토큰 재발급 시 폐기

로그아웃 API로 토큰 만료

1. 로그아웃 API를 호출하면 Access Token과 Refresh Token 모두 만료됩니다.

2. Access Token을 여러번 발급받았을때, Access Token방식 로그아웃 API 호출을 하면 해당 Access Token과 관련 Refresh Token 만 만료됩니다.

3. Admin Key방식 로그아웃 API 호출을 하면 해당 계정의 모든 Access Token과 Refresh Token 이 만료됩니다.

토큰 갱신

Refresh Token을 이용하여 토큰을 갱신할 수 있습니다. 

1. 토큰 갱신 시, 기존 발급 받은 토큰은 유효하지 않습니다.(마지막 갱신한 토큰만 유효함)

2. 토큰을 갱신해도 유효기간 남은 Refresh Token은 계속 사용 가능합니다.

2.1. 토큰 받기로 Refresh Token를 재발급 받았다면 기존 Refresh Token은 사용할 수 없습니다.

2.2. Refresh Token의 남은 유효기간이 1개월 이하인 경우, 토큰 재발급 시 Refresh Token도 재발급되며 기존 Refresh Token은 사용할 수 없습니다.

 

토큰 관련 오류

1. {“msg”:“no authentication key!”¸“code”:-401} 

- 헤더에 토큰이 없거나¸ 토큰 만료된경우

- 토큰을 잘못 설정하여 누락된 경우 (ex) bearer와 한칸 안띄었거나,  bearer 없이 설정)

 

2. {"error":"invalid_grant","error_description":"Redirect URI mismatch.","error_code":"KOE303"}

- 인가 요청 시 redirect_uri과 토큰 요청 시 redirect_uri가 다를때 발생

 

3. {"error":"invalid_grant"¸"error_description":"PKCE validation failed. code_verifier required."¸"error_code":"KOE311"}

- OAuth2 PKCE 스펙에 관련된 파라메터를 인가요청에만 사용하고 토큰 요청시 사용하지 않아서 발생한 오류

- /oauth/authorize 에서 code_challenge¸ code_challenge_method 파라메터 제거

 

4. {"error":"invalid_grant","error_description":"expired_or_invalid_refresh_token","error_code":"KOE322"}
- refresh_token 파라미터 값으로 Refresh Token을 찾을 수 없거나 만료된 refresh_token을 사용한 경우

 

 

 

 

댓글