드디어 구글 로그인 완😺
일반 로그인을 하면 UserDetails로 넘어오고,
OAuth 로그인을 하면 OAuth2User로 넘어옴!
그래서 PrincipalDetails에 UserDetails, OAuth2User를 implements해서 PrincipalDetails 하나로 사용.
OAuth로그인하고 최초 로그인일 경우(회원에 없을 경우), 회원가입 시키는데
// 구글 로그인 버튼 클릭 -> 구글 로그인창 -> 로그인 완료 -> 코드를 리턴(OAuth-Client 라이브러리) -> Accesstoken 요청
// userRequest 정보 -> loadUser함수 호출 -> 구글로부터 회원 프로필 받아줌
OAuth2User oauth2User = super.loadUser(userRequest);
// getAttribute("원하는 속성 이름") 이렇게 정보 가져올 수 있음
String email = oauth2User.getAttribute("email");
// 이미 가입된 회원인지
User userEntity = userRepository.findByUsername(username);
// 아니라면(가입 안된 회원) 해당 정보를 유저 엔티티에 담아서 저장(회원가입)
userRepository.save(userEntity);