我正在尝试使用Spring Security集成Google OAuth 2。一切正常,但refresh_token为null。
这是我的配置:
@Bean
public OAuth2ProtectedResourceDetails googleOAuth2Details() {
AuthorizationCodeResourceDetails googleOAuth2Details = new AuthorizationCodeResourceDetails();
googleOAuth2Details.setAuthenticationScheme(form);
googleOAuth2Details.setClientAuthenticationScheme(form);
googleOAuth2Details.setClientId(googleClientId);
googleOAuth2Details.setClientSecret(googleClientSecret);
googleOAuth2Details.setUserAuthorizationUri(googleOAuthUri);
googleOAuth2Details.setAccessTokenUri(googleTokenUrl);
googleOAuth2Details.setScope(asList("openid","email"));
return googleOAuth2Details;
}
我读到为了获取refresh_token,access_type必须为“ offline”。但是在Spring中设置它的方法是什么?
最佳答案
尝试以下操作:您可以将参数“ hard-configured”添加到googleOAuthUri
,因此:
googleOAuthUri = googleOAuthUri + "?access_type=offline";
googleOAuth2Details.setUserAuthorizationUri(googleOAuthUri);
并希望Spring在添加其他参数时做正确的事情。
另请注意,
refresh_token
仅在用户第一次授予对您的客户端的访问权限时返回。后续的授权请求将不会产生新的refresh_token
,因为假定您的客户端已存储了第一个请求中的内容。