facebook oauth login
This commit is contained in:
@@ -1,6 +1,9 @@
|
|||||||
package com.spring.security1.config.oauth;
|
package com.spring.security1.config.oauth;
|
||||||
|
|
||||||
import com.spring.security1.config.auth.PrincipalDetails;
|
import com.spring.security1.config.auth.PrincipalDetails;
|
||||||
|
import com.spring.security1.config.oauth.provider.FacebookUserInfo;
|
||||||
|
import com.spring.security1.config.oauth.provider.GoogleUserInfo;
|
||||||
|
import com.spring.security1.config.oauth.provider.OAuth2UserInfo;
|
||||||
import com.spring.security1.model.User;
|
import com.spring.security1.model.User;
|
||||||
import com.spring.security1.repository.UserRepository;
|
import com.spring.security1.repository.UserRepository;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@@ -30,11 +33,20 @@ public class PrincipalOauth2UserService extends DefaultOAuth2UserService {
|
|||||||
// userRequest 정보 -> loadUser함수 -> 구글로 부터 회원 프로필 받아준다.
|
// userRequest 정보 -> loadUser함수 -> 구글로 부터 회원 프로필 받아준다.
|
||||||
System.out.println("userRequest: "+ oAuth2User.getAttributes());
|
System.out.println("userRequest: "+ oAuth2User.getAttributes());
|
||||||
|
|
||||||
String provider = userRequest.getClientRegistration().getRegistrationId(); // google
|
OAuth2UserInfo oAuth2UserInfo = null;
|
||||||
String providerId = oAuth2User.getAttribute("sub");
|
if(userRequest.getClientRegistration().getRegistrationId().equals("google")) {
|
||||||
|
System.out.println("구글 로그인 요청");
|
||||||
|
oAuth2UserInfo = new GoogleUserInfo(oAuth2User.getAttributes());
|
||||||
|
} else if(userRequest.getClientRegistration().getRegistrationId().equals("facebook")){
|
||||||
|
System.out.println("페이스북 로그인 요청");
|
||||||
|
oAuth2UserInfo = new FacebookUserInfo(oAuth2User.getAttributes());
|
||||||
|
}
|
||||||
|
|
||||||
|
String provider = oAuth2UserInfo.getProvider();
|
||||||
|
String providerId = oAuth2UserInfo.getProviderId();
|
||||||
String username = provider+"_"+providerId;
|
String username = provider+"_"+providerId;
|
||||||
String password = bCryptPasswordEncoder.encode("패스워드");
|
String password = bCryptPasswordEncoder.encode("패스워드");
|
||||||
String email = oAuth2User.getAttribute("email");
|
String email = oAuth2UserInfo.getEmail();
|
||||||
String role = "ROLE_USER";
|
String role = "ROLE_USER";
|
||||||
|
|
||||||
User userEntity = userRepository.findByUsername(username);
|
User userEntity = userRepository.findByUsername(username);
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package com.spring.security1.config.oauth.provider;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class FacebookUserInfo implements OAuth2UserInfo {
|
||||||
|
|
||||||
|
private Map<String, Object> attributes; // oauth2User.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");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package com.spring.security1.config.oauth.provider;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class GoogleUserInfo implements OAuth2UserInfo {
|
||||||
|
|
||||||
|
private Map<String, Object> attributes; // oauth2User.getAttributes()
|
||||||
|
|
||||||
|
public GoogleUserInfo(Map<String, Object> attributes) {
|
||||||
|
this.attributes = attributes;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getProviderId() {
|
||||||
|
return (String) attributes.get("sub");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getProvider() {
|
||||||
|
return "google";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getEmail() {
|
||||||
|
return (String) attributes.get("email");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return (String) attributes.get("name");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.spring.security1.config.oauth.provider;
|
||||||
|
|
||||||
|
public interface OAuth2UserInfo {
|
||||||
|
String getProviderId();
|
||||||
|
String getProvider();
|
||||||
|
String getEmail();
|
||||||
|
String getName();
|
||||||
|
}
|
||||||
@@ -31,3 +31,10 @@ spring:
|
|||||||
scope:
|
scope:
|
||||||
- email
|
- email
|
||||||
- profile
|
- profile
|
||||||
|
|
||||||
|
facebook:
|
||||||
|
client-id: 1135697936892001
|
||||||
|
client-secret: 681e0ce30d4fdf4df0ed28874a85b1af
|
||||||
|
scope:
|
||||||
|
- email
|
||||||
|
- public_profile
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
<button>로그인</button>
|
<button>로그인</button>
|
||||||
</form>
|
</form>
|
||||||
<a href="/oauth2/authorization/google">구글 로그인</a>
|
<a href="/oauth2/authorization/google">구글 로그인</a>
|
||||||
|
<a href="/oauth2/authorization/facebook">페이스북 로그인</a>
|
||||||
<a href="/joinForm">회원가입을 아직 하지 않으셨나요?</a>
|
<a href="/joinForm">회원가입을 아직 하지 않으셨나요?</a>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
Reference in New Issue
Block a user