【问题标题】:Refresh LinkedIn token with omniauth before expiration在到期前使​​用omniauth 刷新LinkedIn 令牌
【发布时间】:2013-01-16 00:16:27
【问题描述】:

我有一个 Rails (3.2.11) 应用程序,允许用户发布更新到他们的 LinkedIn 个人资料。我目前正在使用omniauth-linkedin gem 来捕获初始用户身份验证,并使用linkedin gem 来发布更新。我遇到的问题是 LinkedIn 访问令牌在 60 天后过期,但根据他们的documentation,可以在过期之前刷新令牌,而无需用户重新授权应用程序。

我查看了 LinkedIn Tips and TricksAuthentication Overview 和 StackOverflow 上的大量帖子 - thisthisthis 只是几个例子 - 我仍然不能找到任何答案。

在用户授权应用程序后(通过omniauth-linkedin),我保存从LinkedIn 返回给我的access_tokensecret。我需要弄清楚如何使用仍然有效的access_token 来刷新它并将过期日期再延长 60 天。

我尝试使用 LinkedIn 的身份验证端点(tokens.access_token 是当前有效的令牌):

url = "https//www.linkedin.com/uas/oauth/authenticate?oauth_token=" + tokens.access_token
result = RestClient.post(url, {oauth_callback: "http://localhost:3000/users/auth/linkedin/callback"})

但我得到了 undefined method 'request_uri' for #<URI::Generic:0x1b144d20> 异常。

我尝试过使用 OAuth::Consumer 客户端(tokens.access_tokentokens.token_secret 是当前有效的令牌):

configuration = { site: 'https://api.linkedin.com', authorize_path: '/uas/oauth/authenticate',
                  request_token_path: '/uas/oauth/requestToken', access_token_path: '/uas/oauth/accessToken' }
consumer = OAuth::Consumer.new(ENV['LINKEDIN_APP_ID'], ENV['LINKEDIN_SECRET'], configuration)
access_token = OAuth::AccessToken.new(consumer, tokens.access_token, tokens.token_secret)

但这只是给了我相同的access_tokensecret

最后,我希望能够利用现有的omniauth-linkedin gem 功能来处理此刷新,知道这是否可能吗?谢谢!

【问题讨论】:

    标签: ruby-on-rails omniauth linkedin


    【解决方案1】:

    在您的第二种方法中(使用 OAuth::Consumer 客户端并传入您现有的访问令牌和机密)应该为您刷新令牌。正如文档所述,只要当前用户登录 LinkedIn.com 并且当前访问令牌尚未过期,就会刷新令牌。

    这并不一定意味着你会得到一个新的令牌。你可能会得到和以前一样的。主要区别在于令牌的生命周期应为 60 天。您可以通过检查 oauth_expires_in 参数的值来验证这一点。应该设置为 5184000。

    这篇博文详细介绍了刷新令牌:https://developer.linkedin.com/blog/tips-and-tricks-refreshing-access-token

    【讨论】:

    • 我尝试了同样的方法,它返回了我传入的相同令牌和秘密,但是 params 是空的,所以我无法验证我的令牌的到期日期是否重置为 60 天从现在开始。
    猜你喜欢
    • 2014-08-19
    • 2021-11-16
    • 2013-03-18
    • 2017-12-20
    • 1970-01-01
    • 2014-03-09
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多