我正在尝试使用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,因为假定您的客户端已存储了第一个请求中的内容。

07-28 13:44