navis
카카오 로그인 API 연동 (Spring boot) 본문
728x90
Kakao Developers REST API 설정
카카오 로그인 API를 연동하는 과정은 여러 단계로 이루어져 있으며, 이를 통해 사용자 인증을 보다 간편하게 구현할 수 있습니다. 아래는 각 단계에 대한 자세한 설명입니다.
목차
1. Kakao Developers 설정
- 애플리케이션 생성 및 설정
- REST API 키 및 Client Secret Code 확인
2. 개발 환경 설정
- Spring Boot 프로젝트 생성
- 의존성 설정 및 플랫폼 추가
- Redirect URI 설정
3. 초기화 및 로그인 구현하기
- 카카오 로그인 활성화
- OAuth 토큰 발급 및 관리
- 사용자 정보 요청 및 처리
4. 보안 설정
- Client Secret Code 설정
- 보안 강화 방안 및 유의사항
5. 실습 예제
- Spring Boot에서 카카오 로그인 구현하기
- 사용자 정보 출력 예제
6. 마무리
- 개발 시 주의사항 및 팁
- 추가 참고 자료 및 문서
1. Kakao Developers 설정
먼저, Kakao Developers에 접속하여 애플리케이션을 생성해야 합니다. 애플리케이션을 생성한 후, 해당 앱에서 제공하는 API들을 사용할 수 있습니다.
- 내 애플리케이션 생성: Kakao Developers에 로그인한 후 '내 애플리케이션' 메뉴에서 새로운 애플리케이션을 생성합니다. 애플리케이션 이름과 사업자 정보 등을 입력하면 앱이 생성됩니다.
- 앱 설정: 앱이 생성되면 '앱 설정' 메뉴에서 기본 정보, 플랫폼 정보 등을 설정할 수 있습니다. 이 단계에서 API 사용을 위한 앱 키(App Key)도 제공됩니다.
2. 개발 환경 설정
애플리케이션을 생성한 후, 사용하려는 플랫폼(웹, 모바일, 데스크탑)에 맞는 개발 환경을 설정해야 합니다. 이 단계에서는 기본적으로 다음과 같은 작업을 수행합니다.
- 플랫폼 추가: 사용할 플랫폼을 추가합니다. 예를 들어 웹 애플리케이션의 경우, 웹 플랫폼을 선택하고 클라이언트 도메인 주소를 입력해야 합니다.
내 애플리케이션' > '앱 설정' > '플랫폼
- 앱 키 복사: REST API 호출을 위해 필요한 'REST API 키'와 보안 강화를 위한 'Client Secret Code'를 복사하여 개발 환경에 설정합니다. 이 키들은 나중에 API 호출 시 필요하게 됩니다.
내 애플리케이션 > 앱 설정 > 앱키
3. 카카오 로그인 구현
카카오 로그인을 구현하는 과정은 비교적 간단하지만 몇 가지 중요한 설정을 해야 합니다.
- 카카오 로그인 활성화: 카카오 로그인을 활성화합니다. 이 옵션을 활성화해야만 사용자들이 카카오 계정을 통해 로그인을 할 수 있습니다.
내 애플리케이션 > 제품 설정 > 카카오 로그인
- Redirect URI 설정: 카카오 로그인 과정이 완료된 후, 사용자가 이동할 URL을 설정해야 합니다. 이를 위해 '카카오 로그인' 설정 화면에서 아래로 스크롤하여 Redirect URI를 입력합니다. 이 URI는 사용자가 로그인 인증을 완료한 후 리디렉션될 주소를 의미합니다.
내 애플리케이션 > 제품 설정 > 카카오 로그인
- 동의 항목 설정: 카카오 로그인을 통해 사용자로부터 받을 정보를 설정합니다. '동의 항목' 메뉴에서 닉네임, 프로필 사진, 성별, 생일 등의 정보에 대해 사용자 동의를 받을 수 있습니다. 이 정보는 카카오 로그인 인증 후 응답 데이터로 제공됩니다.
내 애플리케이션 > 제품 설정 > 카카오 로그인 > 동의항목
4. 보안 설정
API 통신 과정에서 보안을 강화하기 위해 'Client Secret Code'를 활용할 수 있습니다. 이를 통해 액세스 토큰 발급 요청 시 추가적인 보안을 확보할 수 있습니다.
- Client Secret Code 설정: Client Secret Code를 활성화하고, 발급된 코드를 통해 보안 설정을 완료합니다.
내 애플리케이션 > 제품 설정 > 카카오 로그인 > 보안
5. 실습
REST API 통신
이제 카카오 로그인을 통해 얻은 인증 코드를 바탕으로 REST API를 사용하여 사용자 정보를 요청할 수 있습니다.
- 토큰 발급: 카카오 로그인 후에 얻은 인증 코드를 사용하여 액세스 토큰을 발급받습니다. 이때 REST API 키와 Redirect URI, Client Secret Code 등이 필요합니다.
- 사용자 정보 요청: 액세스 토큰을 통해 카카오 사용자 정보 API를 호출하여, 사용자의 프로필 정보를 가져올 수 있습니다. 이 단계에서 사용자로부터 동의받은 항목들(예: 닉네임, 프로필 사진 등)이 포함된 데이터를 받게 됩니다.
Controller
@Slf4j
@RestController
@RequiredArgsConstructor
public class KakaoApiController {
private final KakaoApiService kakaoApiService;
// 카카오 간편 로그인
@GetMapping("/callback-kakao")
public ResponseEntity<String> callback(@RequestParam("code") String code) {
try {
// 액세스 토큰을 받고 사용자 정보를 가져오기
KakaoUserInfoResponseDto userInfo = kakaoApiService.getAccessTokenAndUserInfo(code);
// 사용자 정보를 이용한 추가 작업 (예: 회원가입, 로그인 처리)
log.info("Retrieved User Info: {}", userInfo);
return ResponseEntity.ok("User Info retrieved successfully.");
} catch (Exception e) {
log.error("Error occurred: ", e);
return ResponseEntity.status(HttpStatus.UNAUTHORIZED)
.body("Error: Unauthorized request. Please check your credentials and try again.");
}
}
}
WebClient
// 인증토큰 조회
@Override
public String getAccessToken(String code) {
return webClient.post()
.uri(Comm.KAKAO_TOKEN_URL)
.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_FORM_URLENCODED_VALUE)
.body(BodyInserters.fromFormData("grant_type", "authorization_code")
.with("client_id", clientId)
.with("redirect_uri", redirectUri)
.with("code", code)
.with("client_secret", clientSecret))
.retrieve()
.bodyToMono(Map.class)
.map(responseBody -> (String) responseBody.get("access_token"))
.block();
}
// 유저 정보 조회
@Override
public KakaoUserInfoResponseDto getUserInfo(String accessToken) {
return webClient.get()
.uri(Comm.KAKAO_USER_INFO_URL)
.header(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken)
.retrieve()
.bodyToMono(KakaoUserInfoResponseDto.class)
.block();
}
}
'API' 카테고리의 다른 글
구글 로그인 API 연동 (Spring boot) (1) | 2024.08.28 |
---|---|
네이버 로그인 API 연동 (Spring boot) (0) | 2024.08.28 |