我能够将 facebook api 与 Spring Social 一起使用几天(3 个月或更长时间),但现在出现异常“org.springframework.social.ExpiredAuthorizationException:授权已过期”。
因此,我通过重新连接过滤器调查了自春季社交版本 1.1.0.M3 以来此问题已解决,但即使遵循建议,我也无法更新令牌。
你怎么能从这个异常中恢复过来?
我能够将 facebook api 与 Spring Social 一起使用几天(3 个月或更长时间),但现在出现异常“org.springframework.social.ExpiredAuthorizationException:授权已过期”。
因此,我通过重新连接过滤器调查了自春季社交版本 1.1.0.M3 以来此问题已解决,但即使遵循建议,我也无法更新令牌。
你怎么能从这个异常中恢复过来?
在对代码进行大量分析后,我最终解决了直接修改代码以改变 Spring Social Core 中的 OAuth2Connection 类和通过 Spring Social Core 的特殊过滤器 (ReconnectFilter) 引发 ExpiredAuthorizationException 异常的方式(自 1.1.0 版起包含) .M3)。
为此,请在社交配置中设置重新连接过滤器的 bean。
@Bean
public ReconnectFilter apiExceptionHandler() {
return new ReconnectFilter(usersConnectionRepository, userIdSource()) ;
}
不要忘记在 web.xml 中设置过滤器
<filter>
<filter-name>apiExceptionHandler</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>apiExceptionHandler</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
需要做的最后一件事是在org.springframework.social.connect.support.OAuth2Connection
模块类中修改tospring-social-core
的ExpiredAuthorizationException
异常抛出ExpiredAuthorizationException(null)
throw new to ExpiredAuthorizationException(getKey().getProviderId())
/connect/facebook?reconnect=true
之后,过滤器删除旧的facebook 连接并通过ConnectController
.
使用了 1.1.0.M4 版本的社会春天。