我有一个Rails(3.2.11)应用程序,允许用户发布更新到他们的LinkedIn个人资料。我目前正在使用omniauth-linkedin
gem来捕获初始用户身份验证,并使用linkedin
gem来发布更新。我遇到的问题是LinkedIn访问令牌在60天后过期,但根据它们的documentation,可以在到期之前刷新令牌,而无需用户重新授权应用程序。在到期前刷新LinkedIn令牌omniauth
我已经看过了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 ::消费客户(其中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
宝石功能来处理这种刷新,如果这是可能的任何想法?谢谢!
我想同样的方法,并返回我通过在相同的令牌和秘密,但是'params'是为空,所以我无法验证我的令牌的到期日期是否从现在起重置为60天。 – ACIDSTEALTH