카카오 로그인 토큰 갱신 400 에러 코드

문의 시, 디벨로퍼스 앱ID를 알려주세요.

디벨로퍼스 앱ID : 1037283


토큰 만료를 확인하고 토큰 갱신을 위해 요청할 때 400 에러가 발생합니다.

Error: Request failed with status code 400

const response = await axios({
method: “POST”,
url: “https://kauth.kakao.com/oauth/token”,
headers: {
“Content-type”:
“application/x-www-form-urlencoded;charset=utf-8”,
},
params: {
grant_type: “refresh_token”,
client_id: KAKAO_CLIENT_ID,
refresh_token: user.refreshToken,
},
});

Node.js 환경에서 작성 된 코드입니다.
갱신 요청 : http://localhost:3000

API 호출 응답에 자세한 내용이 전달됩니다.

{"error":"invalid_grant","error_description":"expired_or_invalid_refresh_token","error_code":"KOE322"}

이미만료된 refresh_token을 사용하였고,

/v1/user/logout 호출 시, 사용자 액세스 토큰과 리프레시 토큰을 모두 만료시킵니다.

REST API | Kakao Developers REST API

const logoutResponse = await axios.post(
https://kapi.kakao.com/v1/user/logout”,
{},
{
headers: {
“Content-Type”: “application/x-www-form-urlencoded”,
Authorization: Bearer ${accessToken},
},
}
);

  • 액세스 토큰으로 요청
    • 해당 액세스 토큰만 만료 처리
    • 만료된 액세스 토큰을 사용하는 모든 기기에서 로그아웃됨

액세스 토큰으로 /v1/user/logout 호출 시에는 액세스 토큰만 만료 된다고 알고 있습니다.
액세스 토큰으로 요청해도 리프레시 토큰이 같이 만료되는 것일까요?

가이드에 "사용자 액세스 토큰과 리프레시 토큰을 모두 만료시킵니다."라고 표기되어 있는데요.

/v1/user/logout 호출 시에는 액세스 토큰만 만료 된다고 확인하신 자료 URL 알려주시겠어요?

https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#logout

이곳에서 확인했습니다.

액세스 토큰은 하나의 계정으로 여러번 받을 수 있습니다. (다른 기기, 다른 브라우저에서도 받을 수 있구요.)

액세스 토큰을 발급 받으면, 리프레시 토큰도 함께 받고
해당 액세스 토큰으로 로그아웃하면 함께 받은 리프레시 토큰도 만료됩니다.

즉, 다른 액세스토큰은 만료되지 않는다는 의미이고

서두에 "사용자 액세스 토큰과 리프레시 토큰을 모두 만료시킵니다."로 이해하시면 됩니다.

아 그렇군요, 제대로 이해했습니다.
충분하고 상세한 설명 감사드립니다.

결국 만료된 리프레시 토큰을 사용해서 요청했기에 400 에러가 났다고 이해하면 될까요?
토큰 갱신 요청 이전에 /v1/user/logout으로 인해 리프레시 토큰이 만료되었다는 것인거죠?

결국 만료된 리프레시 토큰을 사용해서 요청했기에 400 에러가 났다고 이해하면 될까요?

네, 맞습니다.

토큰 갱신 요청 이전에 /v1/user/logout으로 인해 리프레시 토큰이 만료되었다는 것인거죠?

네, 맞습니다.

답변 감사드립니다.