如何刷新LinkedIn授权令牌

时间:2013-03-27 20:50:44

标签: api grails linkedin

我有一个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您可以找到一个名为刷新访问权限的部分,其中包含:

  

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

     

只需让您的应用程序通过授权流程,即可获取额外60天使用期限的新访问令牌。

那么,如果只需点击按钮中的用户即可开始,我该如何按照上述相同的流程进行操作。

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

new RESTClient(accessTokenRequestUrl, ContentType.URLENC)

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

我尝试过使用适用于Firefox的RESTClient插件,但它可以正常工作,但如果调用是在应用程序中完成的话,则不会。

有什么想法? 提前谢谢!

干杯,

1 个答案:

答案 0 :(得分: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>