66. 카카오 로그인 엑세스토큰 받기
by 볼빵빵오춘기loginForm.jsp
- static > image 폴더만들고 kakao 버튼 이미지 넣기
- loginForm.jsp에 카카오 로그인 버튼을 만든다.
더보기
href=””에 링크를 넣어줘야하는데 그 링크는 카카오 문서 > 카카오 로그인 > 인증 코드 받기 에서 확인가능하다.
<a href="https://kauth.kakao.com/oauth/authorize?client_id=발급받은 클라이언트ID를 넣어주세요.&redirect_uri=http://localhost:8080/auth/kakao/callback&response_type=code">
<img style="height="38px"" src="/image/kakao_login_button.png">
</a>
UserController
- 위의 인증된 코드를 통해 액세스토큰을 부여받을 것이다.
- 어떻게 전달을 받아야하는가?
- Post 방식으로 key = value 데이터를 카카오 쪽으로 요청을 해야한다.
- Post방식이므로 a링크로 전달은 못한다.
- 이때 필요한 라이브러리가 RestTemplate 이다. 이것을 쓰면 Http 요청을 편하게 할 수있다.
- 예전에는 HttpsURLConnection을 통해 사용했다. (Retrofit2,OkHttp 라이브러리도 있다.)
- 현재는 params.add("grant_type","authorization_code"); 해서 값을 직접적으로 넣고 있지만 나중에는 변수화해서 값을 넣는것이 좋다.
더보기
Rest API 문서를 읽어보고 무엇을 인자로 보내야하는지 확인한다.
Post 방식임으로 http body에 데이터를 전달해야 한다.
(위에 보면 grant_type, client_id, redirect_uri, code 4가지를 넣어야한다.- client_secret는 필수가 아니므로 제외)
MIME = application/x-ww-form-urlencoded;charset=utf-8
https://kauth.kakao.com/oauth/token
- grant_type = autorization_code
- client_id = 내가 발급받은 client_id
- redirect_uri = http://localhost:8080/auth/kakao/callback
- code = 동적이므로 현재 알수없다.
응답받은 코드를 넣으면된다.
client_secret 필수는 아니므로 제외한다.
@GetMapping("/auth/kakao/callback")
public String kakaoCallback(String code){ // @ResponseBody => Data를 리턴해주는 컨트롤러 함수
RestTemplate rt = new RestTemplate();
// HttpHeader 오브젝트 생성
HttpHeaders headers = new HttpHeaders();
headers.add("Content-type","application/x-www-form-urlencoded;charset=utf-8");
// HttpBody 오브젝트 생성
MultiValueMap<String,String> params = new LinkedMultiValueMap<>();
params.add("grant_type","authorization_code");
params.add("client_id","a32fc77e17469c5118302c27b8e29ee2");
params.add("redirect_uri","http://localhost:8080/auth/kakao/callback");
params.add("code",code);
return "카카오 인증 완료 : 코드값 = "+response;
}
UserController
- HttpEntity에 담는 이유는 exchange()가 HrrpEntity를 받기때문이다.
- return 을 response으로 하여 확인해본다.
// HttpHeader 와 HttpBody를 하나의 오브젝트에 담기
HttpEntity<MultiValueMap<String,String>> kakaoTokenRequest =
new HttpEntity<>(params,headers);
// Http 요청하기 - Post방식으로 - 그리고 response 변수의 응답 받음
ResponseEntity<String> response = rt.exchange(
"https://kauth.kakao.com/oauth/token", // 토큰 발급 주소 넣기
HttpMethod.POST, // Post방식
kakaoTokenRequest, // 전달 인자들(데이터)
String.class // 응답을 받을 타입
);
return "카카오 토큰 요청 완료 : 토큰 요청에 대한 응답 : " + response;
'강의 따라하기 > blog' 카테고리의 다른 글
68. 댓글 디자인하기 (0) | 2024.01.10 |
---|---|
67. 카카오 로그인 서비스 구현 완료 (0) | 2024.01.10 |
65. 카카오 로그인 OAuth2.0 개념이해 (0) | 2024.01.07 |
64. 카카오 로그인 환경설정 (0) | 2024.01.07 |
63. 회원수정2 (0) | 2024.01.05 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기