Spring boot kim's cafe/oauth로그인

Springboot 카카오로그인!(3) 토큰을 이용해 사용자 정보 받기

디비드킴 2021. 7. 12. 12:27

이제 토큰을 이용해서

사용자 정보만 받아주면 된다!

 

https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#req-user-info

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

Content-type: application/x-www-form-urlencoded;charset=utf-8

Authorization: Bearer {ACCESS_TOKEN}

바디는 없다!

 

네이버에서 했던 것 처럼만들어주자!

 

service

kakaoLoginService.java

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

headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

헤더를 만들어 준다

 

여기서 주의할 점

얘는 

JSONObject가 아닌

<MultiValueMap<String,String>로 보내줘야 하고 

 

DTO

kakaoAccountDto.java

private LinkedHashMap<String,Stringprofile;라는걸 주는데

걷보기에는 json형식 같아서 JSONObject로 받으려고 했는데

실패했다 그래서 오류를 보니 LinkedHashMapJSONObject

파싱 할 수 없다는 오류가 떠서 LinkedHashMap<String,String>

사용해 줬다!

 

결과

kakaoAccountDto(email_needs_agreement=false, profile_nickname_needs_agreement=false, profile={nickname=실제이름이라 변조합니다}, is_email_valid=true, is_email_verified=true, has_email=true, email=실제이메일이여서변조합니다)

뭔가 복잡한 게 온다

 

이제 회원가입 판별을 해주고

시큐리티에 로그인 처리를 해주자!

 

service

kakaoLoginService.java

 if(userservice.confrimEmail(email)==false)

이메일이 존재하지 않는다면 =처음 온 경우

 JSONObject jsonObject=new JSONObject();

                jsonObject.put("id"kakaoLoginDto.getId());

                jsonObject.put("name"kakaoAccountDto.getProfile().get("nickname"));

                jsonObject.put("provider""kakao");

                userservice.insertOauthLogin(jsonObjectemail,apikey"010-테스트중-못받음");

값들을 세팅해서

 userservice.insertOauthLogin(jsonObjectemail,apikey"010-테스트중-못받음");

회원가입을 진행시킨다!

utilservice.setAuthentication(emailapikey);

얘는 네이버 할 때 써져있다!

https://cordingmonster.tistory.com/86

 

Springboot 네이버로그인!(3) 완료 with Authentication ,AuthenticationManager,SecurityCont

이제 로그인 요청이 완료된 거니 토큰으로 회원정보를 가져와야 한다 개발자센터를 보면 https://developers.naver.com/docs/login/profile/profile.md 네이버 회원 프로필 조회 API 명세 - LOGIN 네이버 회원 프..

cordingmonster.tistory.com

 

결과

db

2021-07-12 12:24:38 | 실제 이메일     | true       | 실제이름       | kakao    | kako측id                                 | $2a$10$ICPOQfqG9Cft0GEO8N5hSOeZCADjedTUQIDvRSrnMpt.iVWzrX4ga | NULL    | ROLE_USER | 010-테스트중-못받음        | true       |

로그인+db저장 성공!

 

+추가

controller

controller.java

끝난뒤 꼭 리다이렉트를 해주자

return "redirect:/";