java - 通过OAuth2、Spring授权后无法获取UserInfo

标签 java spring oauth-2.0 userinfo

在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/

相关文章:

c# - 如何实现 ISecureDataFormat<AuthenticationTicket> Unprotect 方法?

javascript - Google 通过 OAuth2 身份验证从 JavaScript 客户端联系 API 问题

java - 如何使用可重入锁实现三个线程的同步?

Java简单日期格式: Pattern - ParseException

java - 如何模拟 RestTemplate 的新实例?

java - 如何使用 Spring 数据 REST 公开自定义 DTO crud 存储库?

node.js - 尝试在 Electron 桌面应用程序中使用 oauth 流(使用 Spotify API)?

java - GWT Java - "getWidget()"已弃用 - 什么取代了它?

java - Spring集成tcp-connection-factory在回复之前关闭客户端连接

java - Eclipse Spring Boot 构建路径包含重复条目