KakaoService

sudals·2024년 10월 11일

Pawfit - KakaoLogin

목록 보기
2/5
post-thumbnail

기본 설정 및 필드 정의


@Service

  • 이 클래스가 서비스 컴포넌트임을 나타냄
  • Spring에 의해 관리되는 빈(bean)으로 등록됨
  • 서비스 계층에서 비즈니스 로직을 처리하는 역할을 함

@RequiredArgsConstructor

  • Lombok 애노테이션으로, final 필드를 포함하는 생성자를 자동으로 생성
  • 를 통해 의존성 주입을 쉽게 할 수 있음

private final String KAUTH_TOKEN_URL =
private final String KAPI_USER_INFO_URL =

  • 카카오 API 요청을 위해 필요한 토큰 발급 URL과 사용자 정보 조회 URL을 상수로 선언

엑세스 토큰 발급 메서드

  • 카카오 API를 사용, 인가 코드를 통해 엑세스 토큰을 발급받음
  • KakaoTokenResponseDto 객체를 이용해 카카오 서버에서 받은 응답을 처리
  • WebClient를 통해 비동기 HTTP POST 요청을 냄

public String getAccessTokenFromKakao(String code)

  • 카오에서 발급받은 인가 코드(code)를 전달받음
  • 이 코드는 클라이언트에서 카카오 로그인 후 리다이렉트되는 페이지에서 받을 수 있음
  • 발급된 액세스 토큰을 문자열 형태로 반환

WebClient.create(KAUTH_TOKEN_URL).post()

  • WebClient는 Spring WebFlux에서 제공하는 비동기 HTTP 요청을 처리하는 클라이언트

WebClient.create(KAUTH_TOKEN_URL)

  • 카카오 인증 서버로 요청을 보내기 위해, KAUTH_TOKEN_URL에 대한 클라이언트를 생성

post()

  • HTTP POST 요청을 보내는 메서드

uri(uriBuilder -> uriBuilder

  • URI 빌더를 통해 요청할 경로와 쿼리 파라미터를 설정

.path("/oauth/token")

  • 카카오 API 토큰 발급 엔드포인트
  • 이 경로로 POST 요청을 보냄

ueryParam("grant_type", "authorization_code")

  • 요청에 필요한 쿼리 파라미터를 설정

queryParam("client_id", clientId)

  • 카오 API의 클라이언트 ID를 쿼리 파라미터로 추가.
    이 값은 application.properties에서 주입된 clientId임

queryParam("redirect_uri", redirectUri)

  • 리다이렉트 URI를 추가

queryParam("code", code)

  • 클라이언트로부터 전달받은 인가 코드

retrieve()

  • 설명: HTTP 요청을 보내고, 응답을 받아 처리하는 단계
  • 카카오 서버로부터의 응답을 처리할 준비

bodyToMono(KakaoTokenResponseDto.class)

  • 응답 본문을 KakaoTokenResponseDto 객체로 변환하는 작업

block()

  • 비동기 흐름을 동기 방식으로 바꿔, 해당 작업이 완료될 때까지 대기

return kakaoTokenResponseDto.getAccessToken()

  • 카카오 서버에서 받은 응답으로부터 액세스 토큰을 가져와 반환

public KakaoUserResponseDto getUserInfoFromKakao(String accessToken)

  • 액세스 토큰을 이용해 카카오 API에서 유저 정보를 가져오는 기능
  • accessToken : 로그인 후 발급받은 액세스 토큰
  • 사용자 정보를 담은 KakaoUserResponseDto 객체를 반환

WebClient.create(KAPI_USER_INFO_URL).get()

  • WebClient는 Spring WebFlux에서 제공하는 비동기 HTTP 요청 클라이언트
  • 사용자 정보 조회 API 엔드포인트(KAPI_USER_INFO_URL)**를 사용해 WebClient 인스턴스를 생성
  • get(): HTTP GET 요청 사용자 정보를 가져오는 카카오 API는 GET 요청을 사용

.headers(headers -> headers.setBearerAuth(accessToken))

  • HTTP 헤더에 액세스 토큰을 인증 헤더로 설정
  • setBearerAuth(accessToken): Bearer 토큰 방식으로 OAuth 2.0에서 사용됨

retrieve()

  • HTTP 요청을 보낸 후 응답을 수신하는 메서드

bodyToMono(KakaoUserResponseDto.class)

  • 응답 본문을 KakaoUserResponseDto 객체로 변환하는 작업

block()

  • 비동기 요청을 동기적으로 처리하여 결과를 반환하는 메서드
profile
봉천동 불개미

0개의 댓글