From bbb0a43dd5eb02ad7db39916e934926c4ef9094c Mon Sep 17 00:00:00 2001 From: kim Date: Mon, 1 Feb 2021 21:23:48 +0900 Subject: [PATCH] jpablog : kakao login api - access token --- .../controller/api/UserApiController.java | 32 ++++++++++++++++-- .../static/images/kakao_login_medium.png | Bin 0 -> 1945 bytes .../webapp/WEB-INF/views/user/loginForm.jsp | 1 + 3 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 jpablog/src/main/resources/static/images/kakao_login_medium.png 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 0000000000000000000000000000000000000000..f7f67769d03fd5b77b04b55c72504b5d2ffa0238 GIT binary patch literal 1945 zcmV;K2WI$*P)Px+Q%OWYRA>e5TWf3-RTTba*uEQDpe@~&M?nPh`>;vY0pMG_PJ0mVl^Km$tsp+I;BW-_xgv%539 z-JLB9dz0;boqO&#-<*5r-g9p`u;6HdlVYR5XM*E=6_%9oQeyWWAR|Z0d5`4=Zepzw zs(Ucx<~j+V+0fD9waPEpUbT3sa3fG+U5YEWsauYim@XHLeK8H+?~9Z3+Jr~sq`2u9 zuyNxO-%%AWXYz77Y4IIrcvT%CH^4OlMS6>$(|{udDqv_(yGR&%4rA3l9k44Fa2S`z_C`0nAl$> ztWx~?Y*n2qL(`iy#VIQWTDx%V_zh)|kan|*!MQ-gejqu?C42Eo6i%Lw5(;v&JHRX8 zY^Y4c=u!8DI^`&IQ|wX~SW3}%V2ZS@%~Q-}An3}4A#KK7p`|65c{ZybG|e!A2~?{q z=&w)Pff;$9LBCxAjG8F^DBY7m*F2cLBXhJqJniyfaK2U5pm(AJXZHVveLuzGaBYmL zZf%)O$Ui?j73Y4p;M+}ike6e}fLts7taG0|rN$O1;VC|L!c(cb>~IZGRNyM>>;&rf zG|L6jj9XmP4*E$UtH25Z-E`A}>=E}-wfQ!loX{VQwcf!>ZFS9~kbMTO*8>C83YqDh=wM%t_&A3QxO{1gN>-cEH4jO+ zY%Nf+TFUi&>=Wpohp9%OYaVLR2Pemy@u@ZQ@q{lTb-@X1BY|T*% zD+*Zb8;Hbs*ny_E8lJO9DD5#=eLcKPpE(aqnFS1DYY~di zUI-Rv-P2<@5D6%)+_b^M)`yLC+S0)Dot+#k7JXl|?$WgICC`8f8a)WrAFXl$wc9xi zD@u12u+-HWajChwLg6uB<o!8dK#5iS;B&qZ#N(+8TgWykOpb0Q7XPf`-CHNToCL8$%dpVUf zoQp=kJ`T3y@i2ltG?~A=FTUJxN2npU-Q!vM?R0ILv^+IT>}Ae$V9jzMQFLvKg_^%g z8y2g?lZ>K#JKEVG)rPErUCgKM#I@_9Jxld*%w%XA<}Da9{mJLR{F(Y-y(u@V+z_-` z9S5Q}$g@WvP<(G20qr|ifk}oP)3kHpX?GjgbBDM!+uZV8CMGlVi`cI<#NGSVov=5g zO)c%lsipH4+nje`YdG!7{d(da5*DmD8gsZ*+@Pb`h0I5@v4^lc65R@;j}hJSAUnez zhBrY|93LUs{8vdFhutUKd|J%uAwsk{yt-+P5bZ{ZIR%Ek17Etme3hMwehTJcF_tbV z2FjLzd1#DfA0~-_Tn9h1gZ|P*Y#r|Me)-G|`x0X(TT~W|@wtiVf_Luma5y+<&++M2 z=aN;)x;G+>z;)ZAk1;x}X(r%oR74_iQ|hW~Ab2c57o5yYvtp<;0rxeQ=;U28X`Bg^YC1 zmnRe|eM)wl=nI#8(r+kq_BTDEIpnf?!rp>|dEFBe)WfMT*ADu53!8Vuqfe5{UB8#z z^SOPO#|NuyNKX??!?G#VmR8yx{EeyG=B?Pe0oMTyFICNXF%v>`dmhS^9Ex zptJeIyO=tmU0=|LTDtg3)58FEtyBuHl(ZqKw*$qmrl7Tr7d-rQ@cn@Iw*{f&r=oH3iUnowCSl{cdr0l) zB5U~2PJt{VZPj(rh+;QywdXnX660c>pc6Ueg)k$1{?rHbF;sR`%H~^7x8UejTL!!6 zJT?cI^)fqd)R~W!`t~1*#aFxIl|{nAS8aV1#^rSg#3(E0m$spDdpu5_@jgE*_%|>GvF)25qy|oUJ*H* fHSvup4`=@eAk;830m&oM00000NkvXXu0mjfl^e$~ literal 0 HcmV?d00001 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