Помогите обновить токен доступа OAuth от Yahoo в Ruby - PullRequest
4 голосов
/ 14 апреля 2011

Я нахожусь на грани непроизвольного выпадения волос при попытке обновить токен доступа Yahoo OAuth в Ruby.

Используя гемы OmniAuth и OAuth, я могу получить токен доступа от Yahoo,однако срок его действия истекает через один час.

Я следую инструкциям Yahoo, чтобы обновить токен с истекшим сроком действия , и мне последовательно возвращают 401.

Если кто-то может показать мнекак обновить токен доступа с помощью гема OAuth, я был бы значительно благодарен.

Ответы [ 2 ]

4 голосов
/ 24 апреля 2011

Сначала убедитесь, что вы сохраняете свой параметр oauth_session_handle из исходного вызова get_access_token.

Затем, когда вы хотите обновить access_token, сделайте что-то вроде этого:

request_token = OAuth::RequestToken.new(consumer, 
                                        config["ACCESS_TOKEN"],             
                                        config["ACCESS_TOKEN_SECRET"])
token = OAuth::Token.new(config["ACCESS_TOKEN"],
                         config["ACCESS_TOKEN_SECRET"])
@access_token = request_token.get_access_token(
                         :oauth_session_handle => config["SESSION_HANDLE"],
                         :token => token)  

... где ...

config["ACCESS_TOKEN"] is your old access token
config["ACCESS_TOKEN_SECRET"] is your old secret
config["SESSION_HANDLE"] is your oauth_session_handle
consumer is your OAuth::Consumer.new reference

Я сохраняю переменную конфигурации в файле yaml, а затем загружаю ее при запуске.

Не забудьте сохранить @access_token для следующего раза.

Я адаптировал это из ответа на YDN OAuth Forum .

1 голос
/ 09 июля 2012

Примечание: oauth_session_handle возвращается как параметр при вызове get_access_token:

access_token         = request_token.get_access_token(:oauth_verifier => oauth_verifier)  
oauth_session_handle = access_token.params['oauth_session_handle']

Это было менее чем очевидно, если взглянуть на код oauth-ruby / oauth

...