1

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

因此,我通过重新连接过滤器调查了自春季社交版本 1.1.0.M3 以来此问题已解决,但即使遵循建议,我也无法更新令牌。

你怎么能从这个异常中恢复过来?

4

1 回答 1

1

在对代码进行大量分析后,我最终解决了直接修改代码以改变 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-coreExpiredAuthorizationException异常抛出ExpiredAuthorizationException(null)throw new to ExpiredAuthorizationException(getKey().getProviderId())

/connect/facebook?reconnect=true之后,过滤器删除旧的facebook 连接并通过ConnectController.

使用了 1.1.0.M4 版本的社会春天。

于 2014-01-18T18:22:39.103 回答