在尝试刷新Ruby中的Yahoo OAuth访问令牌时,我正处于非自愿脱发的状态。
使用OmniAuth和OAuth宝石,我可以从雅虎获得访问令牌,但它会在一小时后到期。
我正按照雅虎的指示前往refresh an expired token,并且一直返回401。
如果有人可以告诉我如何使用OAuth gem刷新访问令牌,我会非常感激。
答案 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代码
,这一点不太明显