본문 바로가기
Back/Spring

[Spring/Security] 구글 회원 프로필 정보 받아오기

by 오엥?은 2023. 6. 23.
반응형

📌 구글 회원 프로필 정보 받아오기

 구글 로그인이 완료된 뒤의 후처리

1) 코드받기 (인증)

2) 액세스토큰 (권한)

- 액세스 토큰을 받으면 Security 서버가 구글에 로그인한 사용자의 정보에 접근할 수 있는 권한이 생긴다.

3) 사용자 프로필 정보를 가져옴

4) 회원가입

    4-1) 그 정보를 토대로 회원가입을 자동으로 진행시킴

    4-2) 이메일, 전화번호, 이름, 아이디, 집 주소 등의 추가적인 정보를 입력하는 창이 뜸

 

➕ 구글 로그인이 완료가 되면 코드를 받는 것이 아니라, 엑세스토큰 + 사용자 프로필 정보를 한 방에 받는다.

 

 

◽ SecurityConfig.java

SecurityConfig.java

SecurityConfig.java 에 위와 같이 추가해 준다. 아직 아무 것도 만들어지지 않았기 때문에 null을 임시로 넣어둔다.

 

 

 

◽ PrincipalOauth2UserService.java 생성

package com.cos.securityex01.config.oauth;

import org.springframework.security.oauth2.client.userinfo.DefaultOAuth2UserService;
import org.springframework.streotype.Service;

@Service
public class PrincipalOauth2UserService extends DefaultOAuth2UserService {

    // 구글로 부터 받은 userRequest 데이터에 대한 후처리되는 함수
    @Override
    public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {
        return super.loadUser(userrequest);
    }
}

PrincipalOauth2UserService를 이렇게 작성해주고, 

 

.userService(principalOauth2UserService);

SecurityConfig 에 그에 대한 @Autowired를 생성한 뒤 userService 괄호 안에 넣어준다.

 

➕ PrincipalOauth2UserService의 loadUser에서

System.out.println(super.loadUser(userRequest).getAttributes());

위 코드를 출력해 보면

 

{

sub={구글에 회원가입한 아이디},
name=손흥민, 
given_name=흥민,
family_name=손,
picture={사용자 프로필사진 주소},
email={사용자 이메일}
email_verified=true,
local=ko

}

이런 정보를 가지고 온다는 것을 알 수 있다.

 

sub는 구글에 회원가입한 아이디로, 

private String Provider;
private String ProviderId;

데이터에 Provider와 ProviderId를 만든 다음,  

Provider = "google", ProviderId = {구글에 회원가입한 아이디} 와 같이 넣어주면 된다.

 

 

 

참고 : 인프런 - 스프링부트 시큐리티 & JWT 강의 (최주호)

반응형