4

我有一个 grails 应用程序,我想将我的用户帐户连接到他们的 LinkedIn 帐户。

所以我的步骤是:

  • 让用户单击重定向到的按钮:

https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id=MY_API_KEY&scope=r_network&state=SOME_TEXT&redirect_uri=MY_REDIRECT_URI

  • 然后 LinkedIn 重定向到指定的 redirect_uri,我将授权代码作为响应中的参数。使用该代码,我将发布到:

https://www.linkedin.com/uas/oauth2/accessToken?grant_type=authorization_code&code=MY_AUTHORIZATION_CODE&redirect_uri=SAME_REDIREC_URI_AS_BEFORE&client_id=MY_API_KEY&client_secret=MY_API_SECRET

  • 这就像魅力!我获得了访问令牌,并将其与到期日期一起保存在用户域类中。

现在我的问题来了,当我想要一段代码在访问令牌过期之前刷新访问令牌的逻辑以避免用户不时点击按钮。我知道您将帐户链接到 LinkedIn 并且无需再次刷新令牌的应用程序。

在文档中:http: //developer.linkedin.com/documents/handling-errors-invalid-tokens你可以找到一个名为Refreshing Access Tokens的部分,上面写着:

刷新访问令牌非常简单,并且可以在没有为用户显示授权对话框的情况下进行。换句话说,这是一个不会影响应用程序用户体验的无缝过程。

只需让您的应用程序通过授权流程,以获取具有额外 60 天生命周期的新访问令牌。

那么,如果从用户单击按钮开始,我该如何遵循上述相同的过程。

我尝试使用来自 groovy 的HTTPClient类进行 GET,如下所示:

new RESTClient(accessTokenRequestUrl, ContentType.URLENC)

其中 accessTokenRequestUrl 与上面在按钮 href 中使用的相同。这最终应该调用我的redirect_uri,我使用授权代码来请求访问令牌,但它永远不会到达那一点。

我已经尝试使用 Firefox 的 RESTClient 插件,它工作正常,但如果调用是从应用程序内完成的,它就不行。

有什么想法吗?提前致谢!

干杯,

胡安

4

1 回答 1

1

如果您使用 Linkedin JavaScript API,则访问令牌将自动刷新,无需任何用户干预。确保在您设置的初始化字符串内,authorize: true以便按如下方式无缝完成刷新:

<script type="text/javascript" src="http://platform.linkedin.com/in.js">
  api_key: YOUR_KEY_HERE
  authorize: true
</script>
于 2013-03-28T17:53:50.740 回答