如何处理Spring社交facebook中发生的ExpiredAuthorizationException?

时间:2014-01-17 14:43:03

标签: spring spring-social spring-social-facebook

我能够将Spring api与Spring Social一起使用几天(3个月或更长时间),但现在发生异常“org.springframework.social.ExpiredAuthorizationException:授权已过期”。

所以我调查了这个问题,因为春季社交版1.1.0.M3通过重新连接的过滤器得到了解决,但即使按照建议我也无法更新令牌。

如何从此例外中恢复?

1 个答案:

答案 0 :(得分:1)

在对代码进行了大量分析之后,我最终解决了直接修改代码的问题,以改变Spring社交核心中的OAuth2Connection类和Spring社交核心的特殊过滤器(ReconnectFilter)抛出E​​xpiredAuthorizationException异常的方式(包括自版本以来) 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-coreExpiredAuthorizationExceptionExpiredAuthorizationException(null) throw new to ExpiredAuthorizationException(getKey().getProviderId()) {/ 1}}

之后,过滤器会移除旧的facebook连接,并通过/connect/facebook?reconnect=true的{​​{1}}中的POST创建一个新连接。

使用版本1.1.0.M4社交春天。