2014-01-17 3 views
1

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

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

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

ответ

1

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

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

@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=trueConnectController.

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