2011-04-13 5 views
4

Ruby에서 야후 OAuth 액세스 토큰을 새로 고침하는 동안 무의미한 탈모가 발생했습니다.도움말 Ruby에서 야후의 OAuth 액세스 토큰 새로 고침

OmniAuth 및 OAuth 보석을 사용하여 Yahoo에서 액세스 토큰을 얻을 수 있지만 한 시간 만료됩니다.

내가 refresh an expired token에 야후의 지침에 따라있어, 누군가가 어떻게 OAuth는 보석을 사용하여 액세스 토큰을 새로 고치려면 나를 보여줄 수 있다면 지속적으로 401

을 반환하고, 나는 크게 감사 할 것입니다.

+1

보고에서 분명보다 작은 : oauth_session_handle는 get_access_token에 대한 호출에 의해 PARAM로 반환됩니다 401 응답이 반환 된 이유에 대한 자세한 정보를 보려면 Yahoo에서 보낸 헤더 "oauth_problem = timestamp_refused"또는 "oauth_problem = parameter_absent & oauth_parameters_absent = oauth_timestamp"와 같은 내용이 표시됩니다. – Crashthatch

답변

4

먼저, 원래 get_access_token 호출에서 oauth_session_handle 매개 변수를 저장하고 있는지 확인하십시오.

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 파일에서 설정 변수를 저장하고 ...

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) 

... 여기서 당신이 access_token과를 새로 찾고있는 그런

은 같은 것을 할 시작시로드하십시오.

다음 번에 @access_token을 저장하십시오.

나는이 대답을 YDN OAuth Forum에 적용했다.

+0

완벽하게 작동합니다. 감사합니다. – Chris

+0

은 훌륭하게 작동합니다! – Sid

+0

SESSION_HANDLE이 필요합니다. 내 코드에서, 나는 그것을 놓쳤다. 그래서 "token_rejected"도 얻는다. – Stony

1

참고 :

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

이 당신은 또한 WWW-인증 응답 -에서 볼 수 있습니다 oauth-ruby/oauth 코드

관련 문제