이제 로그인 요청이 완료된 거니
토큰으로 회원정보를 가져와야 한다
개발자센터를 보면
https://developers.naver.com/docs/login/profile/profile.md
https://openapi.naver.com/v1/nid/me |
경로로 헤더에는
Authorization: Bearer AAAAOLtP40eH6P5S4Z4FpFl77n3FD5I+W3ost3oDZq/nbcS+7MAYXwXbT3Y7Ib3dnvcqHkcK0e5/rw6ajF7S/QlJAgUukpp1OGkG0vzi16hcRNYX6RcQ6kPxB0oAvqfUPJiJw==
이런 식으로 해줘야 했다
coolsms에서 봤던 건데
도대체 무슨 형식의 헤더인지
모르겠어서
그냥 지정을 안 하고
headers.add("Authorization", "Bearer "+jsonObject.get("access_token"));
예제 그대로 해서 보내봤다
dto
service
그랬더니 띠용??
성공적으로 왔다
어 이러면 coolsms도
다시 시도해봐야겠다
어쨌든
근데 웃긴 게
언제 가입된지도 기억도 안 나지만
---.yahoo.co.kr로 이메일이 나온다
너무 옛날에 가입해서
저렇게 가지고 있나 보다
그래서
String email=(String)naverDto.getResponse().get("email");
String[] email2=email.split("@");
if(!email2[1].equals("naver.com")){
email=email2[0]+"@naver.com";
}
체크해서 db에 저장될 때는
---@naver.com으로 들어가게
로직을 만들어 줬다 그다음
++추가 20210803
네이버는 이메일을 주는게 아니라
연락처 이메일을 준다
네이버 내정보를 보면
이 메일을 주는거다 확인해보니
yahoo.co.kr로 되어 있는데
그래서 사진 처럼 현재 사용 이메일로 재인증 했다
새로 하나 알았다...
위에 로직은 이제 삭제 해주자
이제 로그인 처리를 해줘야 한다
AuthenticationManager를 사용해줘야 하는데
@Autowired
private AuthenticationManager authenticationManager;
해도 안될 수가 있다 이럴 땐
security
시큐리티에 직접 오버라이드 해줘야 한다
처음 보는 오류였다
service
그다음
Authentication객체를
authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(email, pwd));
이용해서 만들어준다 여기서 주의할 점
pwd는 절대 노출되면 안 된다
그리고 같은 번호를 넣어야 한다
이유는
로그인도 여기로 온다 그렇다면
SecurityContextHolder.getContext().setAuthentication(authentication);
시큐리티가 검증을 하는데 db에 들어가서 select문을 날려보기 때문이다
만약 회원가입 시에 1111이라고 해놓고
갑자기 로그인할 때는 2222라고 하면?
oauth로그인에 실패한다
그래서 절대 노출되면 안 되고
잘 관리해야 한다
또 하나 해줘야 한다
첫 oauth로그인 시도 후
시큐리티가 select 문을 던졌던데
db에 없다면?
역시 실패한다
if(userservice.confrimEmail(email)==false){
userdto userdto=new userdto();
userdto.setEmail(email);
userdto.setName((String)naverDto.getResponse().get("name"));
userdto.setPwd(pwd);
userservice.insertUser(userdto);
}
이메일이 존재하는지 안 하는지 검사
if(userservice.confrimEmail(email)==false)
존재하지 않다면 회원가입 진행
처음이라면 꼭 회원가입을 해줘야 한다
안 그러면 검증에 실패했다는 오류를 본다
이걸로 한 시간 날렸다
왜 안되지 하고 보다가
응? select문을 날리네?
발견하고 회원가입 로직을 대충 만들고
테스트해봤더니 됐다
결과
로그인에 성공했다!
또 하나의 api 성공!
후 소스가 많이 더러워졌다 역시 정리하러 가자!
+추가
vo
@AllArgsConstructor
추가해준다
service
좀 더 심플해졌다!
아 저것도 utillservice.java로 빼주자
이제 다른 부분들도
정리하러 가자!
+추가
controller
끝난뒤 꼭 리다이렉트를 해주자
return "redirect:/";
'Spring boot kim's cafe > oauth로그인' 카테고리의 다른 글
Springboot 카카오로그인!(2) 토큰받기 (0) | 2021.07.12 |
---|---|
Springboot 카카오로그인!(1) 인가코드 받기! (0) | 2021.07.12 |
Springboot 네이버로그인!(2) 토큰받기! (0) | 2021.07.10 |
Springboot 네이버로그인!(1) code받기 state만들기 (0) | 2021.07.10 |
Springboot 구글로그인!(3) with interface (0) | 2021.06.16 |