OAuth 로그인 에러

Sol's·2023년 1월 17일
0

오류

목록 보기
13/18

OAuth 로그인 로직을 작성하고 로그인을 하는데 갑자기 nullPoint에러를 만났습니다.


코드를 변경했는데 너무 많이 변경했던 탓에 디버깅을 시작했습니다.

문제는 아주 작은 실수였습니다...

 User userEntity = userRepository.findByUsername(username);

        if (userEntity == null) {
            System.out.println("로그인이 최초입니다.");
            User newUser = User.builder()
                    .username(username)
                    .password(password)
                    .email(email)
                    .role(role)
                    .provider(provider)
                    .providerId(providerId)
                    .build();
            userRepository.save(newUser);
        } else {
            System.out.println("이미 회원가입을 한적이 있습니다. 이미 회원입니다.");
        }

        //회원가입을 강제로 진행시킬것이다.
        //일반 로그인 -> user
        //OAuth 로그인 -> attributes라는 맵을 같이 들고 있다.
        return new PrincipalDetails(userEntity, oAuth2User.getAttributes());
    }

로그인이 최초라면, if문을 시작하기 전에 선언한 User 객체가 아닌 새로운 newUser객체를 만들어서 저장을 하고
PrincipalDetails의 생성자로는 DB에 저장한 객체가 아닌 null값이 들어있는 객체를 넘기니 당연히 nullPoint 에러가 발생한 것입니다.

User userEntity = userRepository.findByUsername(username);

        if (userEntity == null) {
            System.out.println("로그인이 최초입니다.");
            userEntity = User.builder()
                    .username(username)
                    .password(password)
                    .email(email)
                    .role(role)
                    .provider(provider)
                    .providerId(providerId)
                    .build();
            userRepository.save(userEntity);
        } else {
            System.out.println("이미 회원가입을 한적이 있습니다. 이미 회원입니다.");
        }

        //회원가입을 강제로 진행시킬것이다.
        //일반 로그인 -> user
        //OAuth 로그인 -> attributes라는 맵을 같이 들고 있다.
        return new PrincipalDetails(userEntity, oAuth2User.getAttributes());

위 코드처럼 처음 선언한 userEntity객체를 사용해서 DB에 저장을 하고 PrincipalDetails의 생성자로 넘겨주니 문제가 해결되었습니다!


profile
배우고, 생각하고, 행동해라

0개의 댓글