제가 springboot Oauth2 라이브러리를 사용해서 구글 로그인 연동을 하려고 합니다.
사용자가 초기에 구글 로그인 시, 구글 계정 이메일과 비밀번호를 입력하면 데이터베이스에 자동으로
user테이블에 저장되도록 하고 싶습니다.
@Log4j2
@RequiredArgsConstructor
@Service
public class OAuth2UserDetailsService extends DefaultOAuth2UserService {
private final UserRepository userRepository;
private final PasswordEncoder passwordEncoder;
@Override
public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {
log.info("userRequest: " + userRequest);
String clientName = userRequest.getClientRegistration().getClientName();
log.info("clientName : "+clientName);
log.info(userRequest.getAdditionalParameters());
OAuth2User oAuth2User = super.loadUser(userRequest);
log.info("==============================");
oAuth2User.getAttributes().forEach((k,v) -> {
log.info(k+" : "+v);
});
String email = null;
if(clientName.equals("Google")){ // 구글을 이용하는 경우
email = oAuth2User.getAttribute("email");
}
이 코드는 구글 로그인시 수행되는데,
변수 oAuth2User의 getAttributes() 메서드를 통해 출력하면 로그인한 사용자에 대한 정보가 출력이 됩니다. 여러가지 정보중에 사용자 email 정보가 있어 email을 user 객체에 넘겨주어 db에 저장하면 되지만
로그인 시 사용한 비밀번호 정보가 없어서 어떻게 비밀번호를 얻어와 db에 저장을 해야할지 모르겠습니다.
답변해주시면 정말 감사하겠습니다.....