在configure()中我有:
...
.oauth2Login()
.userInfoEndpoint()
.oidcUserService(oidcUserService);
我的 CustomIodcUserService 类:
@Service
public class CustomOidcUserService extends OidcUserService {
@Autowired
private UserRepository userRepository;
@Override
public OidcUser loadUser(OidcUserRequest userRequest) throws OAuth2AuthenticationException {
OidcUser oidcUser = super.loadUser(userRequest);
Map attributes = oidcUser.getAttributes();
GoogleOAuth2UserInfo userInfo = new GoogleOAuth2UserInfo(attributes);
updateUser(userInfo);
return oidcUser;
}
private void updateUser(GoogleOAuth2UserInfo userInfo) {
User user = userRepository.findByEmail(userInfo.getEmail()).get();
if(user == null) {
user = new User();
}
user.setEmail(userInfo.getEmail());
user.setName(userInfo.getName());
System.out.println(userRepository.save(user));
}
}
但是这个类的方法永远不会被调用 有没有人遇到过这个问题,或者我该如何解决这个问题或以不同的方式获取 UserInfo?
最佳答案
https://www.callicoder.com/spring-boot-security-oauth2-social-login-part-2/
这篇文章描述了如何做到这一点,只有他们在那里使用
userInfoEndpoint ()
.userService (customOAuth2UserService)
关于java - 通过OAuth2、Spring授权后无法获取UserInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58626495/