【发布时间】:2019-03-10 04:06:26
【问题描述】:
当用户通过 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 的 WebSecurityConfigurerAdapter
【问题讨论】:
-
您能否添加一些代码来说明您如何将 OAuth2 部分集成到您的 spring-boot 应用程序中?
-
@git-flo 我更新了问题,提供了我如何交换授权码的代码。我从用户登录帐户的 UI 获得的授权码
-
stackoverflow.com/questions/37026981/…也许这个答案可以帮助你
标签: spring-boot oauth-2.0 gmail gmail-api