Linkedin刷新访问令牌

Linkedin刷新访问令牌,linkedin,spring-social,Linkedin,Spring Social,我在linkedin的spring社交api上遇到了一些麻烦。60天后,访问令牌过期,我不能使用它在访问令牌用户的时间线上发布。有没有办法克服这个错误?重复我的回答: 尽管我不能诚实地说我已经在LinkedIn上尝试过了,但是您应该能够获得连接(通过ConnectionRepository)并调用refresh()。事实上,这应该适用于任何OAuth2安全API(除了Facebook,它不太遵守OAuth2规范) 我还没有在LinkedIn上尝试过,因为直到最近Spring Social才通过O

我在linkedin的spring社交api上遇到了一些麻烦。60天后,访问令牌过期,我不能使用它在访问令牌用户的时间线上发布。有没有办法克服这个错误?

重复我的回答:

尽管我不能诚实地说我已经在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)。我正在考虑的另一个选择是深入研究AbstractOAuth2Apibling,并配置它公开的RestTemplate来处理该异常。关于它是否能工作有点不确定,但如果它能工作,那么任何扩展AbstractOAuth2ApiBinding的API绑定都会自动获得刷新功能……不过,对于不遵守OAuth2规则的Facebook来说,情况除外。

查看这里的文档,我认为LinkedIn的“刷新”机制访问令牌实际上与原始授权过程相同。看起来他们没有提供可用于通过后端API调用获取新访问令牌的刷新令牌。refresh()不会处理这种情况,是吗?看起来您必须确保定期通过授权流发送用户以维护新的令牌。正确的。在我写下这个答案后,我意识到LinkedIn并没有实现刷新令牌,而是要求你再次通过授权流程(Facebook也这样做)。它与规范不同,这有点令人恼火,但可以说这样更安全。无论如何,SpringSocial的重新连接过滤器应该能够完美地处理这种情况。它现在在Spring Social 1.1.0.M3中提供。