我有一個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