我能够将Spring api与Spring Social一起使用几天(3个月或更长时间),但现在发生异常“org.springframework.social.ExpiredAuthorizationException:授权已过期”。
所以我调查了这个问题,因为春季社交版1.1.0.M3通过重新连接的过滤器得到了解决,但即使按照建议我也无法更新令牌。
如何从此例外中恢复?
答案 0 :(得分:1)
在对代码进行了大量分析之后,我最终解决了直接修改代码的问题,以改变Spring社交核心中的OAuth2Connection类和Spring社交核心的特殊过滤器(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
模块spring-social-core
类ExpiredAuthorizationException
例ExpiredAuthorizationException(null)
throw new to ExpiredAuthorizationException(getKey().getProviderId())
{/ 1}}
之后,过滤器会移除旧的facebook连接,并通过/connect/facebook?reconnect=true
的{{1}}中的POST创建一个新连接。
使用版本1.1.0.M4社交春天。