2024.01.14 - [Spring Boot] - [Spring Boot] 로그인 기능 구현 (5) - 구글 로그인 (OAuth 2.0)
2024.01.14 - [Spring Boot] - [Spring Boot] 로그인 기능 구현 (6) - 카카오 로그인 (OAuth 2.0)
2024.01.14 - [Spring Boot] - [Spring Boot] 로그인 기능 구현 (7) - 네이버 로그인 (OAuth 2.0)
- OAuth 2.0 관련 구글, 카카오, 네이버 까지 다룸
- 마지막으로 페이스북 로그인을 다룰 차례
- 네이버 로그인 까지 마친 코드를 수정하는 방식으로 페이스북 로그인 다룰 것
1. OAuth 사용 페이스북 로그인 구현
1-0. 시작하기
- Meta for Devleopers (https://developers.facebook.com/) 접속
- 시작하기 > 계정 인증
1-1. 앱 추가하기
- 내 앱 > 앱 만들기
- 앱에 필요한 기능 선택 : 기타
- 앱 유형 선택 : 소비자
- 앱 이름 : OAuth 2.0 로그인 예제
- 앱 연락처 이메일 : 본인 이메일
- 앱 만들기
- 앱에 제품 추가 : Facebook 로그인 > 설정
- 플랫폼 : 웹
- 사이트 URL : http://localhost:8080 > save
1-2. application.yml 수정
# application.yml에 아래 설정 추가
spring:
security:
oauth2:
client:
registration:
facebook:
client-id: [앱 설정에서 확인 가능한 앱 ID]
client-secret: [앱 설정에서 확인 가능한 앱 시크릿 코드]
scope:
- email
- public_profile
- client-id, client-secret 확인 방법
- 대시보드 > 앱 설정 > 기본 설정에서 확인 가능!
1-3. FacebookUserDetails 추가
@AllArgsConstructor
public class FacebookUserDetails implements OAuth2UserInfo {
private Map<String, Object> attributes;
@Override
public String getProvider() {
return "facebook";
}
@Override
public String getProviderId() {
return (String) attributes.get("id");
}
@Override
public String getEmail() {
return (String) attributes.get("email");
}
@Override
public String getName() {
return (String) attributes.get("name");
}
}
1-4. CustomOauth2UserService 수정
// 기존의 코드 중 else if (provider.equals("naver"))의 밑에 아래 코드 추가
else if (provider.equals("facebook")) {
log.info("페이스북 로그인");
oAuth2UserInfo = new FacebookUserDetails(oAuth2User.getAttributes());
}
log.info()로 찍어본 attributes
더보기
getAttributes : {id=2578627312312548, name=안창민, email=chm2006@naver.com}
이러한 attributes의 구조를 바탕으로 FacebookUserDetails에서 값을 추출함
1-5. login.html 수정
- a href 태그 추가하여 페이스북 로그인 가능하게 수정
<a href="/oauth2/authorization/facebook">페이스북 로그인</a>
2. 실행 결과
2-1. 로그인 화면
- 페이스북 로그인 항목이 추가됨
2-2. 페이스북 로그인 클릭 시
- 페이스북 로그인 기능 확인
2-3. 페이스북 로그인 이후 마이페이지
- ID : "provider(facebook)"_"providerId" 형태
2-4. MySQL에서 확인
- 페이스북 로그인 한 회원이 DB에 저장됨을 확인
'Spring Boot' 카테고리의 다른 글
[Spring Boot] JSON 객체 송수신 예제 (0) | 2024.03.15 |
---|---|
[Spring Boot] JaCoCo로 테스트 커버리지 확인 (3) | 2024.01.30 |
[Spring Boot] 로그인 기능 구현 (7) - 네이버 로그인 (OAuth 2.0) (1) | 2024.01.14 |
[Spring Boot] 로그인 기능 구현 (6) - 카카오 로그인 (OAuth 2.0) (0) | 2024.01.14 |
[Spring Boot] 로그인 기능 구현 (5) - 구글 로그인 (OAuth 2.0) (0) | 2024.01.14 |