Spring boot 如何从授权代码OAuth2获取电子邮件地址
当用户通过Oauth2协议登录Gmail帐户并完成后,我的服务器会获得授权代码,我会将此代码交换为刷新令牌和访问令牌,一切都按计划进行,但我也需要获得电子邮件地址。我的意思是如果用户以helloworld@gmail.com我想知道这个地址,我可以知道吗 这是我在访问令牌和刷新令牌上交换授权代码的端点: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
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 APIUsers.getProfile
操作,使用特殊值“me”作为用户id来引用经过身份验证的用户
见:
这会给你一个类似的回答:
{
"emailAddress": -string-,
"messagesTotal": -integer-,
"threadsTotal": -integer-,
"historyId": -unsigned long-
}
能否添加一些代码,说明如何将OAuth2部分集成到spring boot应用程序中?@git flo I更新了问题,提供了如何交换授权代码的代码。我从用户登录帐户所在的用户界面获得的授权码。也许这个答案会有所帮助you@payment我不知道id_令牌可以用来获取一些信息,这个端点就是我需要的。Thnk u