You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中如何获取Google OAuth2授权后的用户信息?

Spring Boot Google OAuth2登录后用户信息的存储与获取

Spring Boot完成Google OAuth2授权登录后,用户信息并不会自动输出到某个固定位置,需要你主动获取并处理,核心存储和获取方式如下:

1. 用户信息的核心存储位置

登录成功后,用户的认证信息会被存入SecurityContextHolder的SecurityContext中,其中的Authentication对象包含了完整的用户数据。你可以通过getPrincipal()方法拿到OAuth2User实例,它的attributes集合里就是Google返回的所有用户信息(比如邮箱、姓名、头像地址等)。

2. 主动输出用户信息的几种方式

方式一:在接口中获取并打印

写一个接口,从上下文取出用户信息,直接输出到控制台或者返回给前端:

@GetMapping("/current-user")
public void getCurrentUser() {
    Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    if (auth.getPrincipal() instanceof OAuth2User) {
        OAuth2User oAuth2User = (OAuth2User) auth.getPrincipal();
        // 输出到控制台
        System.out.println("Google授权用户信息:" + oAuth2User.getAttributes());
    }
}

方式二:自定义OAuth2UserService拦截处理

通过重写DefaultOAuth2UserService的loadUser方法,在授权成功的第一时间获取并输出用户信息:

@Service
public class CustomGoogleOAuth2UserService extends DefaultOAuth2UserService {
    @Override
    public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {
        OAuth2User user = super.loadUser(userRequest);
        // 这里可以直接打印用户信息
        System.out.println("Google登录成功,用户信息:" + user.getAttributes());
        return user;
    }
}

3. 注意事项

  • 默认情况下Spring Security不会自动打印用户信息,所有输出操作需要你主动编码实现。
  • 返回的用户字段取决于你在Google OAuth2控制台配置的scope(比如email、profile等权限),权限越多,返回的字段越完整。

内容的提问来源于stack exchange,提问作者Богдан Харашук

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 15:12:22