diff --git a/jpablog/src/main/java/com/example/jpablog/controller/api/UserApiController.java b/jpablog/src/main/java/com/example/jpablog/controller/api/UserApiController.java index 874c52df..56f3c5eb 100644 --- a/jpablog/src/main/java/com/example/jpablog/controller/api/UserApiController.java +++ b/jpablog/src/main/java/com/example/jpablog/controller/api/UserApiController.java @@ -1,17 +1,18 @@ package com.example.jpablog.controller.api; -import com.example.jpablog.config.auth.PrincipalDetail; -import com.example.jpablog.config.auth.PrincipalDetailService; import com.example.jpablog.dto.ResponseDto; import com.example.jpablog.model.User; import com.example.jpablog.service.UserService; import lombok.RequiredArgsConstructor; -import org.springframework.http.HttpStatus; +import org.springframework.http.*; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.*; +import org.springframework.web.client.RestTemplate; import java.security.Principal; @@ -41,6 +42,31 @@ public class UserApiController { return new ResponseDto<>(-1, HttpStatus.BAD_REQUEST.value()); } + @GetMapping("/auth/kakao/callback") + public String kakaoCallback(String code) { + // Retrofit2, OkHttp, RestTemplate, HttpsURLConnection 등이 있음 + RestTemplate rt = new RestTemplate(); + HttpHeaders headers = new HttpHeaders(); + headers.add("Content-type", "application/x-www-form-urlencoded; charset=utf-8"); + + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("grant_type", "authorization_code"); + params.add("client_id", "e40b81f26358aa250b10a59dc8f3aa62"); + params.add("redirect_uri", "http://localhost:8080/auth/kakao/callback"); + params.add("code", code); + + HttpEntity> kakaoTokenRequest = + new HttpEntity<>(params, headers); + + ResponseEntity response = rt.exchange( + "https://kauth.kakao.com/oauth/token", + HttpMethod.POST, + kakaoTokenRequest, + String.class + ); + + return "카카오 토큰 요청 완료" + response; + } /*// 기본 로그인 @PostMapping("/user/login") public ResponseDto login(@RequestBody User user, HttpSession session) { diff --git a/jpablog/src/main/resources/static/images/kakao_login_medium.png b/jpablog/src/main/resources/static/images/kakao_login_medium.png new file mode 100644 index 00000000..f7f67769 Binary files /dev/null and b/jpablog/src/main/resources/static/images/kakao_login_medium.png differ diff --git a/jpablog/src/main/webapp/WEB-INF/views/user/loginForm.jsp b/jpablog/src/main/webapp/WEB-INF/views/user/loginForm.jsp index 5be4256e..a3e03403 100644 --- a/jpablog/src/main/webapp/WEB-INF/views/user/loginForm.jsp +++ b/jpablog/src/main/webapp/WEB-INF/views/user/loginForm.jsp @@ -13,6 +13,7 @@ + kakao_login_button