Spring boot 如何从授权代码OAuth2获取电子邮件地址

Spring boot 如何从授权代码OAuth2获取电子邮件地址,spring-boot,oauth-2.0,gmail,gmail-api,Spring Boot,Oauth 2.0,Gmail,Gmail Api,当用户通过Oauth2协议登录Gmail帐户并完成后,我的服务器会获得授权代码,我会将此代码交换为刷新令牌和访问令牌,一切都按计划进行,但我也需要获得电子邮件地址。我的意思是如果用户以helloworld@gmail.com我想知道这个地址,我可以知道吗 这是我在访问令牌和刷新令牌上交换授权代码的端点: public OAuth2AccessToken oauth(String authorizationCode) { AuthorizationCodeResourceDeta

当用户通过Oauth2协议登录Gmail帐户并完成后,我的服务器会获得授权代码,我会将此代码交换为刷新令牌和访问令牌,一切都按计划进行,但我也需要获得电子邮件地址。我的意思是如果用户以helloworld@gmail.com我想知道这个地址,我可以知道吗

这是我在访问令牌和刷新令牌上交换授权代码的端点:

 public OAuth2AccessToken oauth(String authorizationCode) {
        AuthorizationCodeResourceDetails resource = new AuthorizationCodeResourceDetails();
        resource.setUserAuthorizationUri(userAuthorizationUri);
        resource.setAccessTokenUri(accessTokenUri);
        resource.setClientId(clientId);
        resource.setClientSecret(clientSecret);
        resource.setPreEstablishedRedirectUri(redirectUrl);
        resource.setScope(scopes);
        resource.setUseCurrentUri(false);

        AccessTokenRequest request = new DefaultAccessTokenRequest();
        request.setPreservedState(new Object());
        request.setAuthorizationCode(authorizationCode);

        AuthorizationCodeAccessTokenProvider provider = new AuthorizationCodeAccessTokenProvider();
        OAuth2AccessToken accessToken = provider.obtainAccessToken(resource, request);

        return accessToken;
    }

我没有OAuth2的WebSecurityConfigureAdapter

如果用户的电子邮件地址尚未在OAuth2响应的
id\u令牌
部分提供,您可以使用Gmail API
Users.getProfile
操作,使用特殊值“me”作为用户id来引用经过身份验证的用户

见:

这会给你一个类似的回答:

{
  "emailAddress": -string-,
  "messagesTotal": -integer-,
  "threadsTotal": -integer-,
  "historyId": -unsigned long-
}

能否添加一些代码,说明如何将OAuth2部分集成到spring boot应用程序中?@git flo I更新了问题,提供了如何交换授权代码的代码。我从用户登录帐户所在的用户界面获得的授权码。也许这个答案会有所帮助you@payment我不知道id_令牌可以用来获取一些信息,这个端点就是我需要的。Thnk u