【问题标题】:How to handle ExpiredAuthorizationException happening in spring social facebook?如何处理春季社交facebook中发生的ExpiredAuthorizationException?
【发布时间】:2014-01-17 14:43:02
【问题描述】:

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

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

如何从这个异常中恢复?

【问题讨论】:

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


    【解决方案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类模块spring-social-core中修改ExpiredAuthorizationException异常的抛出ExpiredAuthorizationException(null)throw new to ExpiredAuthorizationException(getKey().getProviderId())

    之后,过滤器会删除旧的 facebook 连接,并通过 /connect/facebook?reconnect=trueConnectController 中的 POST 创建一个新连接。

    使用的是1.1.0.M4版本的social spring。

    【讨论】:

      猜你喜欢
      • 2014-09-21
      • 1970-01-01
      • 1970-01-01
      • 2015-07-07
      • 1970-01-01
      • 2015-01-07
      • 2016-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多