2013-06-18 94 views
0

我對LinkedIn的spring-social-api有一些麻煩。 60天后訪問令牌過期,我無法使用它在訪問令牌用戶的時間線上發佈。有一種方法可以通過這個錯誤?Linkedin刷新訪問令牌

回答

0

重複我的回答從http://forum.springsource.org/showthread.php?138943-Linkedin-refresh-accesstoken

雖然我不能誠實地說,我和LinkedIn試了一下,你應該能夠獲得(通過ConnectionRepository)連接和調用刷新()就可以了。事實上,這應該可以與任何OAuth2安全的API一起使用(除了那些不被OAuth2規範玩的Facebook)。

我還沒有試用過LinkedIn,因爲直到最近Spring Social還通過他們的OAuth 1.0a認證與LinkedIn合作。但是這聽起來像是一件好事。

因此,Spring Social支持刷新訪問令牌。但是,(1)捕獲ExpiredAuthorizationException,(2)使用ConnectionRepository來獲取Connection,以及(3)調用refresh()來更新連接,這是您的人工努力。

更令人敬畏的是,如果Spring Social以某種方式爲您捕獲ExpiredAuthorizationException,自動調用refresh(),然後重新嘗試觸發異常的調用;使呼叫者無縫。這是我一直在琢磨的事情,但目前還沒有實施。

一個可能的解決方案是一個方面。但是它需要由開發人員配置以正確包裝應用程序正在使用的任何API綁定類型(例如LinkedInTemplate)。我正在考慮的另一個選項是挖掘AbstractOAuth2ApiBinding並配置它公開的RestTemplate來處理該異常。它是否可以工作有點不確定,但是如果它確實起作用,那麼任何擴展了AbstractOAuth2ApiBinding的API綁定都會自動獲得刷新功能......除了那些沒有使用OAuth2規則的Facebook,再一次。

+0

在這裏檢查文檔我認爲LinkedIn的「刷新」訪問令牌的機制實際上與原始授權過程相同。看起來他們沒有提供刷新令牌,可以通過後端API調用來獲得新的訪問令牌。 refresh()不會處理這種情況,會嗎?看起來你必須確保定期通過授權流程發送用戶來維護一個新的令牌。 http://developer.linkedin.com/documents/handling-errors-invalid-tokens – sdouglass

+0

沒錯。在我寫這個答案後,我意識到LinkedIn不會實現刷新令牌,而是要求您再次通過授權流程(Facebook也是這樣做的)。這與規範有所不同,有點令人討厭,但這種方式可以說更安全。無論如何,Spring Social的ReconnectFilter應該能夠完美地處理這種情況。它現在可以在Spring Social 1.1.0.M3中找到。 –