https://developers.kakao.com/tool/resource/login
카카오 로그읜 버튼을 이미지 다운받아서 폴더경로에 이미지 넣어준다.
<a href="#"><img src="/images/kakao_login_button.png" alt="kakao login button"></a>
로그인 버튼 잘 들어간거 확인!
로그인 요청주소
Get으로 요청 받고,
/oauth/authorize?client_id=${REST_API_KEY}&redirect_uri=${REDIRECT_URI}&response_type=code"
/* REST_API_KEY : 내애플레키에션 받은 키값
REDIRECT_URI : 인증이 되고 난 후 받을 주소
넣어주고 앞에 호스트주소 넣어주면 끝
*/
<a href="https://kauth.kakao.com/oauth/authorize?client_id=키값&redirect_uri=http://localhost:8010/auth/kakao/callback&response_type=code"><img src="/images/kakao_login_button.png" alt="kakao login button"></a>
그리고 전체동의 누르고 계속하기를 누르면
상단 도메인주소창에 설정한 콜백주소가 잘 나오는걸 볼 수 있고, 뒤에 코드를 받아서 인증이 정상적으로 됐다는 으ㅣ미인데, 페이지가 안나오는건
컨트롤러를 아직 만들지 않았기때문에 저렇게 나오는 거라 컨트롤러를 만들어줘야 한다.
@GetMapping("/auth/kakao/callback")
public @ResponseBody String kakaoCallBack(String code) {
return "카카오 인증완료" + code;
}
코드값을 받았기 때문에 인증은 완료가 되었다..!
인증된 코드값을 통해서 Access Token 을 받을거다
카카오리소스서버에 등록된 내 개인정보를 응답받기위해서
그 데이터에 접근하기위해 필요한 토큰을 받을거다
https://kauth.kakao.com/oauth/token //POST방식 - http body에 데이터를 전달
Parameter에 4가지 데이터를 담아서 전달
MIME:Content-type: application/x-www-form-urlencoded;charset=utf-8
(key:value형태로 전달하라는 뜻)
grant_type=authorization_code
client_id=키값
redirect_uri=http://localhost:8010/auth/kakao/callback
code={응답코드}
@GetMapping("/auth/kakao/callback")
public @ResponseBody String kakaoCallBack(String code) {
//post방식으로 key=value 데이터를 요청(카카오한테)
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", "키값");
params.add("redirect_uri", "http://localhost:8010/auth/kakao/callback");
params.add("code", code);
//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,
kakaoTokenRequest,
String.class
);
return "카카오 토큰 요청 완료 : 토큰 요청에대한 응답 : " + response;
}
토큰에 대한 응답이 왔다...
편하게 보기위해 json parser 사이트에서 아까 토큰 나온 부분에서 {괄호부분내용복사 후 붙여넣으면 쉽게 볼 수 있다.}
//생략
return response.getBody();
브라우저에 출력하면
제대로 나오는걸 확인 할 수 있다.!!