public ResponseEntity<LoginResponseDTO> success(HttpServletRequest request,
OAuth2User oAuth2User) {
System.out.println(oAuth2User);
if (loginSuccessService.checkEmail(oAuth2User.getAttribute("email"))) {
HttpSession session = request.getSession();
String email = oAuth2User.getAttribute("email");
session.setAttribute("email", email);
session.setMaxInactiveInterval(3600);
///생략
}
스프링 OAuth2를 다루고 OAuth2 객체를 불러와 details를 뽑으려하니 저 에러가 터졌다.
에러메시지는
No primary or single unique constructor found for interface org.springframework.security.oauth2.core.user.OAuth2User
이렇게 되고...
에러의 원인은 매개변수로 넣어주는 OAuth2User 객체와 관련한 생성자를 찾을 수 없다는 뜻이다.
public ResponseEntity<LoginResponseDTO> success(HttpServletRequest request,
@AuthenticationPrincipal OAuth2User oAuth2User) {
System.out.println(oAuth2User);
if (loginSuccessService.checkEmail(oAuth2User.getAttribute("email"))) {
HttpSession session = request.getSession();
String email = oAuth2User.getAttribute("email");
session.setAttribute("email", email);
session.setMaxInactiveInterval(3600);
이렇게 @AuthenticationPrincipal 어노테이션을 붙여주면 된다.
OAuth2User 객체는 스프링 컨테이너에 등록되어 있지 않기 때문에 저 어노테이션을 써야한다고 한다