问题描述
||
我正试图在Ruby中刷新Yahoo OAuth访问令牌时出现非自愿脱发的情况。
使用OmniAuth和OAuth gem,我可以从Yahoo获取访问令牌,但是它会在一小时后过期。
我正在按照Yahoo的说明刷新过期的令牌,并且始终返回401。
如果有人可以告诉我如何使用OAuth gem刷新访问令牌,我将不胜感激。
解决方法
首先,请确保您要保存原始ѭ0调用中的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论坛上的答案改编而成的。
,注意:oget_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代码,这并不明显