2013-06-18 170 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中找到。 –