Как справиться с ExpiredAuthorizationException, происходящим в весенней социальной сети Facebook?

Я смог использовать api facebook с Spring Social в течение нескольких дней (3 месяца или более), но теперь возникает исключение «org.springframework.social.ExpiredAuthorizationException: срок действия авторизации истек».

Итак, я исследовал, что эта проблема была решена с весенней социальной версии 1.1.0.M3 через фильтр переподключения, но даже следуя рекомендациям, я не смог обновить токен.

Как вы можете восстановиться после этого исключения?


person thalespf    schedule 17.01.2014    source источник


Ответы (1)


После тщательного анализа кода я решил сделать прямое изменение кода, чтобы изменить способ, которым исключение ExpiredAuthorizationException вызывается классом OAuth2Connection в социальном ядре Spring и через специальный фильтр (ReconnectFilter) социального ядра Spring (включено с версии 1.1.0). .М3).

Для этого установите бин фильтра переподключения в социальной конфигурации.

@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 и создает новое через POST в /connect/facebook?reconnect=true из ConnectController.

Использовалась социальная пружина версии 1.1.0.M4.

person thalespf    schedule 18.01.2014