[Spring JPA ] - 카카오로그인 액세스 토큰 받기 - 18

JEONG SUJIN·2022년 11월 27일
0

스프링부트 JPA

목록 보기
19/24
post-thumbnail

카카오로그인 버튼 이미지 다운로드

https://developers.kakao.com/tool/resource/login
카카오 로그읜 버튼을 이미지 다운받아서 폴더경로에 이미지 넣어준다.

loginForm.jsp

<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>
		


그리고 전체동의 누르고 계속하기를 누르면

상단 도메인주소창에 설정한 콜백주소가 잘 나오는걸 볼 수 있고, 뒤에 코드를 받아서 인증이 정상적으로 됐다는 으ㅣ미인데, 페이지가 안나오는건
컨트롤러를 아직 만들지 않았기때문에 저렇게 나오는 거라 컨트롤러를 만들어줘야 한다.

UserController.java

@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 사이트에서 아까 토큰 나온 부분에서 {괄호부분내용복사 후 붙여넣으면 쉽게 볼 수 있다.}

UserController.java

//생략
return  response.getBody();

브라우저에 출력하면
제대로 나오는걸 확인 할 수 있다.!!

profile
기록하기

0개의 댓글