· 4 years ago · Jan 19, 2021, 10:04 PM
1package sample;
2
3import org.springframework.context.annotation.Bean;
4import org.springframework.context.annotation.Configuration;
5import org.springframework.security.core.Authentication;
6import org.springframework.security.core.context.SecurityContextHolder;
7import org.springframework.security.oauth2.client.OAuth2AuthorizedClient;
8import org.springframework.security.oauth2.client.OAuth2AuthorizedClientService;
9import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
10import org.springframework.web.context.annotation.RequestScope;
11
12import sample.api.facebook.Facebook;
13
14@Configuration
15public class SocialConfig {
16
17 @Bean
18 @RequestScope
19 public Facebook facebook(OAuth2AuthorizedClientService clientService) {
20 Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
21 String accessToken = null;
22 if (authentication.getClass().isAssignableFrom(OAuth2AuthenticationToken.class)) {
23 OAuth2AuthenticationToken oauthToken = (OAuth2AuthenticationToken) authentication;
24 String clientRegistrationId = oauthToken.getAuthorizedClientRegistrationId();
25 if (clientRegistrationId.equals("facebook")) {
26 OAuth2AuthorizedClient client = clientService.loadAuthorizedClient(clientRegistrationId, oauthToken.getName());
27 accessToken = client.getAccessToken().getTokenValue();
28 }
29 }
30 return new Facebook(accessToken);
31 }
32
33}
34