4

Ruby で Yahoo OAuth アクセス トークンを更新しようとしているときに、思わず髪が抜けてしまいました。

OmniAuth および OAuth gem を使用して、Yahoo からアクセス トークンを取得できますが、1 時間で期限切れになります。

期限切れのトークンを更新する 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

config 変数を 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 に答える