【发布时间】:2013-01-16 00:16:27
【问题描述】:
我有一个 Rails (3.2.11) 应用程序,允许用户发布更新到他们的 LinkedIn 个人资料。我目前正在使用omniauth-linkedin gem 来捕获初始用户身份验证,并使用linkedin gem 来发布更新。我遇到的问题是 LinkedIn 访问令牌在 60 天后过期,但根据他们的documentation,可以在过期之前刷新令牌,而无需用户重新授权应用程序。
我查看了 LinkedIn Tips and Tricks、Authentication Overview 和 StackOverflow 上的大量帖子 - this、this 和 this 只是几个例子 - 我仍然不能找到任何答案。
在用户授权应用程序后(通过omniauth-linkedin),我保存从LinkedIn 返回给我的access_token 和secret。我需要弄清楚如何使用仍然有效的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_token 和 tokens.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_token 和secret。
最后,我希望能够利用现有的omniauth-linkedin gem 功能来处理此刷新,知道这是否可能吗?谢谢!
【问题讨论】:
标签: ruby-on-rails omniauth linkedin