카카오 리프레시 토큰 받기

개발 환경 : Java Spring backend
앱 ID : 1153008

현재 OAuth2Client 라이브러리를 사용하여 카카오 소셜 로그인을 구현한 상태입니다.
소셜 로그인 시 URL을 http://localhost:8080/oauth2/authorization/kakao로 입력 후 로그인을 수행하면 소셜 로그인이 성공적으로 작동하면서 카카오에서 발급해주는 사용자 액세스 토큰을 확인할 수 있었는데 사용자 리프레시 토큰은 같이 발급이 안되는건가요?

추후 토큰 갱신을 위해서 사용자 액세스 토큰과 사용자 리프레시 토큰이 둘 다 필요하다고 문서에서 확인을 해서 사용자 리프레시 토큰을 얻고자했지만 얻을 수 없어 도움을 요청합니다.

같이 발급됩니다. 가이드

카카오로부터 받은 토큰 받기 응답 전체 내용을 기재해주세요. (발급받은 토큰은 일부 마스킹 해주시구요.)

문서는 처음부터 확인했었습니다. 근데 사용자 액세스 토큰만 찍히고 리프레시 토큰에서 계속 null이 나와서요. 다른 설정을 해줘야하는 부분이 있을까요?

카카오로 부터 받은 Json Full Text 를 기재해주시겠어요?

사용자 정보를 조회하는 과정에서 리프레시 토큰을 발급받는 것이 아니라 성공 후 처리 핸들러에서 처리해주는 것으로 확인해서 SuccessHandler에서 해결했습니다!

네, 토큰 발급이 아닌 토큰 갱신을 하셨나보네요.

카카오 로그인 시. 액세스 토큰 발급 받기 하시면 액세스토큰, 리프레시토큰 둘다 전달되고
리프레시토큰을 이용한 토큰 갱신을 하면, 리프레시토큰 재발급 주기가 도래하기 전까지는 액세스토큰만 전달됩니다.

한 가지 더 여쭤보려고 합니다.

토큰 갱신을 할 때 카카오부터 발급받는 리프레시 토큰을 요청 파라미터 중 하나로 포함시키는 것으로 알고 있는데요.
이 때, 응답이 200 OK가 나오긴 했는데 말씀하셨던대로 재발급 주기가 도래하기 전까지는 액세스 토큰이라도 전달이 되어야 하는데 액세스 토큰이 null이 나오는 이유는 무엇인가요?

  1. 카카오 액세스 토큰과 카카오 리프레시 토큰이 둘 다 유효한 상황이면 요청을 보내도 Null이 나오는 것인가요?

  2. 카카오 액세스 토큰만 만료된 상태고 카카오 리프레시 토큰이 유효한 상황이라면 액세스 토큰만을 다시 발급받는 것이 맞나요?

  3. 카카오 리프레시 토큰이 만료된 경우라면 다시 소셜 로그인을 하도록 유도하면 되는건가요?

안녕하세요.

앞선 문의에서도 200 정상 응답인데 액세스 토큰이 전달안되었다는 문의를 주셨는데요.
200응답에 액세스토큰이 null 로 전달되는 경우는 없어요.

요청하신 로그를 보니 400에러 응답이 나간 경우가 한건있는데요. 그외 모두 액세스 토큰 정상 전달되었습니다.

Nov 20, 2024 @ 17:44:32.671{"error":"invalid_request","error_description":"refresh token is blank","error_code":"KOE319"}	

  1. /oauth/token 토큰 갱신하기 API 호출 시, 액세스 토큰은 필요 없고 refresh_token만 파라메터로 전달하시면됩니다.
    refresh_token이 유효하다면. 즉, 에러 발생하지 않았다면 액세스토큰이 전달됩니다.

  2. 액세스 토큰 상태에 상관 없이 refresh_token이 유효 하다면 액세스 토큰을 재발급 받게 되고
    refresh_token이 만료 1개월 남은 시점에 토큰 갱신하기하시면 refresh_token도 함께 전달되고, 기존 refresh_token은 폐기됩니다.

즉, 응답에 refresh_token가 있으면 받아서 갱신해주시면됩니다.

  1. 네, 맞습니다.