0

对于linkedin,我在spring-social-api方面遇到了一些麻烦。60 天后访问令牌过期,我无法使用它在访问令牌用户的时间线上发布。有没有办法通过这个错误?

4

1 回答 1

0

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

虽然我不能诚实地说我已经在 LinkedIn 上尝试过,但您应该能够获得连接(通过 ConnectionRepository)并在其上调用 refresh()。事实上,这应该适用于任何受 OAuth2 保护的 API(Facebook 除外,它不太符合 OAuth2 规范)。

我还没有在 LinkedIn 上尝试过,因为直到最近 Spring Social 还通过他们的 OAuth 1.0a 身份验证与 LinkedIn 合作。但这听起来是件好事。

因此,Spring Social 支持访问令牌的刷新。但您需要手动完成 (1) 捕获 ExpiredAuthorizationException,(2) 使用 ConnectionRepository 来获取连接,以及 (3) 调用 refresh() 来更新连接。

更棒的是,如果 Spring Social 能够以某种方式为您捕获 ExpiredAuthorizationException,自动调用 refresh(),然后重新尝试触发异常的调用;使呼叫者无缝连接。这是我一直在思考的事情,但还没有实现。

一种可能的解决方案是方面。但开发人员需要对其进行配置,以正确包装应用程序使用的任何 API 绑定类型(例如 LinkedInTemplate)。我正在考虑的另一个选择是深入研究 AbstractOAuth2ApiBinding 并配置它公开的 RestTemplate 以处理该异常。它是否可以工作有点不确定,但如果它确实有效,那么任何扩展 AbstractOAuth2ApiBinding 的 API 绑定都将自动获得刷新能力......再次,对于不遵守 OAuth2 规则的 Facebook 除外。

于 2013-06-20T21:36:54.030 回答