我能夠在Spring Social中使用Facebook API幾天(3個月或更長時間),但現在發生異常「org.springframework.social.ExpiredAuthorizationException:授權已過期」。如何處理髮生在Spring社交Facebook的ExpiredAuthorizationException?
因此我調查了這個問題,自從春季社交版本1.1.0.M3通過重新連接的過濾器已經解決了,但即使按照建議我也無法更新令牌。
如何從此異常中恢復?
我能夠在Spring Social中使用Facebook API幾天(3個月或更長時間),但現在發生異常「org.springframework.social.ExpiredAuthorizationException:授權已過期」。如何處理髮生在Spring社交Facebook的ExpiredAuthorizationException?
因此我調查了這個問題,自從春季社交版本1.1.0.M3通過重新連接的過濾器已經解決了,但即使按照建議我也無法更新令牌。
如何從此異常中恢復?
在對代碼進行了大量分析之後,我最終解決了直接修改代碼以更改ExpiredAuthorizationException異常的方法,該方法由Spring社交核心中的OAuth2Connection類以及Spring社交核心的特殊過濾器(ReconnectFilter)版本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連接,並通過ConnectController
的/connect/facebook?reconnect=true
中的POST創建一個新連接。
使用版本1.1.0.M4社交春天。