JAN's History
OAuth2 로그인 - 페이스북 개발자 센터로 페이스북 연동 로그인하기 2탄 본문
1.OAuth2 로그인을 위한 세팅
1.1 SecurityConfig.java에 설정 세팅하기
- oauth2Login() : 우리가 설정한 joinForm에서 form 로그인이 아닌 OAuth2 로그인도 인정해준다.
- userInfoEndpoint() : 해당 회사에서 인증이 완료가 된다면, 인증 코드가 아닌 회원정보로 받는다는 의미이다.
- OAuth2를 이용하면 인증 코드(=토큰)으로 받지 않아도 바로 scope로 정해진 정보를 받을 수있기 때문!
- userService() : 해당 로직을 실행시키고 데이터를 받을 서비스를 지정하는 영역이다.
➡️ userService() 에는 응답받는 타입이 정해져있으므로, 그 타입에 맞게 이 부분을 만들러 가보자!
1.2 OAuth2DetailsService.java 파일 세팅하기
@Service
public class OAuth2DetailsService extends DefaultOAuth2UserService {
@Override
public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {
System.out.println("oauth2 서비스 탐");
OAuth2User oAuth2User = super.loadUser(userRequest);
System.out.println(oAuth2User.getAttributes());
return null;
}
}
userService()에서 받을 수 있는 타입인 DefaultOAuth2UserService를 extends한다!
그리고 주입받을 수 있도록 IoC등록을 위해 @Service를 걸어준다.
이후 SecurityConfig에서 DI해준다.
private final OAuth2DetailsService oAuth2DetailsService;
2. javaScript 수정
2.1 로그인 폼 onclick추가
- onclick= "javascript:location.href='/oauth2/authorization/[플랫폼이름]'" 는 oauth2를 사용할 때 필요한 문법입니다!
- [플랫폼이름]은 그때 yml파일에 채워넣었던 플랫폼입니다!
3. 페이스북 로그인
그리고 이제 페이스북 로그인 버튼을 클릭하면 facebook으로 로그인이 됩니다
+ 페이스북 개발자 센터로 로그인이 이미 되어있는 경우는 그 페이지에서 로그아웃하고 다시 들어오면 위와같은 창이 나옵니다
그리고 동의하기를 계속 누르다보면 에러페이지가 뜨는데 일단 무시해도 됩니다!
에러가 터지는 이유는 OAuth2DetailsService에서 응답받는 회원정보를 처리할 로직을 아직 만들지 않았기 때문이에요.
우선 그 전에 페이스북 인증 정보가 OAuth2DetailsService에 잘 전달되는지를 확인해보겠습니다.
4. loadUser 오버라이딩
@Service
public class OAuth2DetailsService extends DefaultOAuth2UserService {
@Override
public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {
System.out.println("oauth2 서비스 탐");
OAuth2User oAuth2User = super.loadUser(userRequest);
System.out.println(oAuth2User.getAttributes());
return null;
}
}
loadUser는 페이스북이 응답해준 회원정보를 받는 함수입니다.
loadUser함수 내부에는 userRequest가 있는데 userRequest에는 회원정보가 직접적으로 담기는 함수입니다.
그래서 String으로 날아온 데이터를 super로 파싱해서 받고, 출력해 확인해보면?
이렇게 잘 값을 받아온다는 것을 확인할 수 있습니다.
'스프링' 카테고리의 다른 글
OAuth2 로그인 - 페이스북 개발자 센터로 페이스북 연동 로그인하기 3탄 (0) | 2024.06.06 |
---|---|
OAuth2 로그인 - 페이스북 개발자 센터로 페이스북 연동 로그인하기 (0) | 2024.06.01 |
Spring AOP를 이용한 전처리와 후처리 구현방법 2탄!!(+무한참조 에러해결) (0) | 2024.05.28 |
Spring AOP를 이용한 전처리와 후처리 구현방법! (0) | 2024.05.25 |
Ajax통신을 사용하는 2가지 이유 ex) 회원가입, 좋아요, 댓글.. (0) | 2024.05.22 |