Spring boot kim's Shop/소셜로그인

Springboot Jwt+카카오로그인!(1) with code+토큰+사용자프로필

디비드킴 2021. 8. 1. 14:46

네이버 로그인은 구현했었다

https://cordingmonster.tistory.com/104?category=1037452 

 

Springboot 네이버로그인+Jwt(1) with redirect,URLSearchParams

드디어.... 드디어 알아냈다 네이버 로그인구현은 이전에 했었다 https://cordingmonster.tistory.com/84?category=1034502 Springboot 네이버로그인!(!) code받기 state만들기 소스를 정리하기 전에 좀 아쉬움이..

cordingmonster.tistory.com

별다를 건 없고 

쿠키/리다이렉트 문제 때문에

조금 헤맸었다

 

이제

카카오 로그인 구현해보자!

https://cordingmonster.tistory.com/87?category=1034502 

 

Springboot 카카오로그인!(1) 인가코드 받기!

일단 애플리케이션 등록을 해주고 동의 항목을 만들어준다 개발 중에는 번호를 못 받나 보다.. 카카오 계정(이메일)을 꼭 체크 해주자 개발자 센터를 보면 https://developers.kakao.com/docs/latest/ko/kakaolo

cordingmonster.tistory.com

역시 이전에 구현한 기록 있다 

이걸 가지고 jwt 형식에 맞게 

코드를 살짝 바꿔보자!

 

인가코드를 받는 로직이다

js

 

restcontroller.java
kakaoLoginService.java

인가 코드를 받으면 아래 창이 나타난다

카카오 로그인창

callurl 만들기

controller.java

로그인 완료 후 

리다이렉트를 위해

컨트롤러에 만들어준다

 

service

토큰을 받자

kakaoLoginService.java

헤더 지정

headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

바디에 

개발자 센터 지시대로 넣기

body.add("grant_type""authorization_code");

        body.add("client_id"apikey);

        body.add("redirect_uri"callBackUrl);

        body.add("code"code);

합치기

 HttpEntity<MultiValueMap<String,String>>entity=new HttpEntity<>(body,headers);

통신 후 dto객체로 받기

 kakaoTokenDto kakaoTokenDto=restTemplate.postForObject("https://kauth.kakao.com/oauth/token",entity,kakaoTokenDto.class);

 

Dto

kakaoTokenDto.java

결과

vscode

kakaoTokenDto(token_type=bearer, access_token=Qs9SG-o1G6-FmOkcfUI-orb8bN5UkjQndYsr3go9dJgAAAF7ACzUSg, expires_in=21599, refresh_token=5RVgJglMTTWVzdWjr2c3gscQ8Orzy4yVFF6BzQo9dJgAAAF7ACzUSQ, refresh_token_expires_in=5183999, scope=account_email profile_nickname) kakaotoken

 

 

다음 이제 토큰을 이용해서

사용자 프로필 받기

 

service

kakoLoginService.java

개발자 센터 

요구사항대로 헤더 지정

headers.add("Authorization""Bearer "+kakaoTokenDto.getAccess_token());

headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

 

전송 및 dto로 정보 받기

kakaoLoginDto kakaoLoginDto =restTemplate.postForObject("https://kapi.kakao.com/v2/user/me",entity,kakaoLoginDto.class);

 

Dto

kkakaoLoginDto.java

사실 주는 정보가 훨씬~~~ 많은데

약식으로 받는 dto이다

 

controller

controller.java

 

테스트

vscode

개인정보를 준다

실제 정보여서 가렸습니다

 

이제 로그인 및 리다이렉트를 준비해주자