4

尝试在 Ruby 中刷新 Yahoo OAuth 访问令牌时,我正处于非自愿脱发的境地。

使用 OmniAuth 和 OAuth gem,我可以从 Yahoo 获取访问令牌,但它会在一小时后过期。

我正在按照 Yahoo 说明刷新过期令牌,并且始终返回 401。

如果有人可以向我展示如何使用 OAuth gem 刷新访问令牌,我将不胜感激。

4

2 回答 2

4

首先,确保从原始get_access_token调用中保存 oauth_session_handle 参数。

然后,当您要刷新 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的回答中改编了这个。

于 2011-04-23T21:41:45.823 回答
1

注意: 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代码来看,这并不明显

于 2012-07-09T10:15:39.180 回答