帮助在Ruby中刷新Yahoo的OAuth访问令牌

时间:2011-04-13 23:58:49

标签: ruby oauth yahoo access-token

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

使用OmniAuth和OAuth宝石,我可以从雅虎获得访问令牌,但它会在一小时后到期。

我正按照雅虎的指示前往refresh an expired token,并且一直返回401。

如果有人可以告诉我如何使用OAuth gem刷新访问令牌,我会非常感激。

2 个答案:

答案 0 :(得分: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的答案中对此进行了调整。

答案 1 :(得分:1)

注意:通过调用get_access_token将oauth_session_handle作为参数返回:

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

通过查看oauth-ruby/oauth代码

,这一点不太明显