728x90
이번엔 페이스북 로그인을 작업해보려한다.
지난 포스팅에 사용했던 코드에 이어서 작업하려한다.
https://devhooney.tistory.com/100
1. 페이스북 개발자 사이트
- 사이트에 접속해서 내 앱 > 앱 만들기 클릭
- 소비자 선택
- 표시 이름 작성, 선택된 비즈니스 관리자 계정 없음 선택 후 앱 만들기
- 만들어진 앱 선택 후 Facebook 로그인 빠른 시작 선택
- 웹 선택
- 사이트 URL에 본인의 URL을 작성(localhost:8080)
- 다음 선택하고 마지막에 돌아가기 클릭
- 설정 > 기본 설정 페이지에 앱ID와 앱 시크릿 코드가 있다.
2. application.yml 수정
spring:
security:
oauth2:
client:
registration:
google:
client-id: 구글
client-secret: 구글
scope: email, profile
facebook:
client-id: 페이스북
client-secret: 페이스북
scope: email, public_profile
3. PrinciapOauth2UserSerivce 수정
- 페이스북 관련 설정만 추가해주면 된다.
- 기존 코드에 유지보수 및 추가개발이 편하도록 만들었기 때문에.
OAuth2User oAuth2User = super.loadUser(userRequest);
OAuth2UserInfo oAuth2UserInfo = null;
if (userRequest.getClientRegistration().getRegistrationId().equals("google")) {
oAuth2UserInfo = new GoogleUserInfo(oAuth2User.getAttributes());
} else if (userRequest.getClientRegistration().getRegistrationId().equals("facebook")) {
oAuth2UserInfo = new FacebookUserInfo(oAuth2User.getAttributes());
} else {
System.out.println("Only Google and Facebook");
}
String provider = Objects
4. provider 패키지 안에 FacebookUserInfo 클래스 추가
public class FacebookUserInfo implements OAuth2UserInfo{
private Map<String, Object> attributes; // getAttributes()
public FacebookUserInfo(Map<String, Object> attributes) {
this.attributes = attributes;
}
@Override
public String getProviderId() {
return (String) attributes.get("id");
}
@Override
public String getProvider() {
return "facebook";
}
@Override
public String getEmail() {
return (String) attributes.get("email");
}
@Override
public String getName() {
return (String) attributes.get("name");
}
}
5. loginForm.html 수정
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>로그인 페이지</title>
</head>
<body>
<h1>로그인 페이지</h1>
<hr>
<form action="/login" method="POST">
<input type="text" name="username" placeholder="Username"><br>
<input type="password" name="password" placeholder="Password"><br>
<button>로그인</button>
</form>
<a href="/oauth2/authorization/google">구글 로그인</a>
<a href="/oauth2/authorization/facebook">페이스북 로그인</a>
<a href="/joinForm">회원가입을 아직 하지 않으셨나요?</a>
</body>
</html>
6. 확인
- DB 조회
- 구글과 페이스북 로그인으로 회원가입까지 완료했다.
728x90
'개발 > Java&Kotlin' 카테고리의 다른 글
[Java] 열거형(enums) (0) | 2022.09.13 |
---|---|
[Spring] 스프링시큐리티 OAuth2.0 적용해보기(Naver) (0) | 2022.09.02 |
[Spring] 스프링시큐리티 OAuth2.0 적용해보기(Google) (0) | 2022.08.31 |
[Spring] 스프링시큐리티 예제 (2) | 2022.08.29 |
[JPA] LIKE 정리 (0) | 2022.08.24 |