네이버 로그인은 구현했었다
https://cordingmonster.tistory.com/104?category=1037452
별다를 건 없고
쿠키/리다이렉트 문제 때문에
조금 헤맸었다
이제
카카오 로그인 구현해보자!
https://cordingmonster.tistory.com/87?category=1034502
역시 이전에 구현한 기록 있다
이걸 가지고 jwt 형식에 맞게
코드를 살짝 바꿔보자!
인가코드를 받는 로직이다
인가 코드를 받으면 아래 창이 나타난다
callurl 만들기
로그인 완료 후
리다이렉트를 위해
컨트롤러에 만들어준다
service
토큰을 받자
헤더 지정
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(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
개발자 센터
요구사항대로 헤더 지정
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
사실 주는 정보가 훨씬~~~ 많은데
약식으로 받는 dto이다
controller
테스트
개인정보를 준다
실제 정보여서 가렸습니다
이제 로그인 및 리다이렉트를 준비해주자
'Spring boot kim's Shop > 소셜로그인' 카테고리의 다른 글
Springboot Jwt+카카오로그인!(3) with 리다이렉트 (0) | 2021.08.01 |
---|---|
Springboot Jwt+카카오 로그인!(2) with 빌더 패턴(builder) (0) | 2021.08.01 |