Sign-Post API に基づく grails-oauth プラグインを使用して Yahoo Oauth アクセス トークンを更新する
質問
私は grails oauth プラグインを使用しています。これは私にyahooのものを提供しています access_token
成功しました。しかし問題は、このトークン (yahoo からの) の有効期限が 1 時間しかないことです。その後、それを更新する必要があります。そして、ドキュメントを調べてみると、(トークンの有効期限が切れた場合に備えて)それを更新するプロセスがあるようです。そして、この呼び出しは 3 番目のレッグ (ユーザーの手動承認プロセス) をバイパスします。それはとても良いですね!
さて、メソッドを使用しようとしている場合 oauthService.fetchAccessToken
――これがヒットする手法なんでしょうね。 get_access_token
URL (プロバイダー側)。しかし、例外が発生します:
oauth.signpost.例外.OAuthNotAuthorizedException:許可は失敗しました(サーバーは401で返信しました)。これは、消費者キーが正しくない場合、または署名が一致しなかった場合に発生する可能性があります。oauth.signpost.abstractoauthprovider.handleunexpectedResponse(abstoctoauthprovider.java:239)でoauth.signpost.signpost.abstractoauthprovider.retrievetoken(abstractoauthprovider.java:189) (Abstractoauthprovider.java:99)oauth.signpost。 oauthprovider $ retireveAccesstoken.call(不明なソース)org.grails.plugins.oauth.oauthservice.fetchaccestoken(oauthservice.groom:286)at org.grails.plugins.oauth.outhservice $
プラグインと標識コードをさらにデバッグしました。そして、(今のところは)サインポストを検討する必要があると思います。プラグインは後で簡単に変更できます。
参考までに、私は commonshttp4 クライアントでサインポスト (jar - 1.2.1.1) を使用しています。
accessToken を更新するための Yahoo ドキュメント ページのリンクは次のとおりです。http://developer.yahoo.com/oauth/guide/oauth-refreshaccesstoken.html
ヤフーのニーズ oauth_session_handle
yahoo によって accessToken とともに送信されるリクエスト内のパラメータ。Signpost はこれを取得する方法を提供します -- provider.getResponseParameters()
.
次に、次の方法を使用して、これらのパラメーターを爽快なリクエストに戻すために使用しています-Consumer.setAdtionalParameters(httpparams)
でもそれはうまくいきません!以下はスタックトレースの部分です。RefreshedAccessToken を取得しようとすると
oauth.signpost.例外.OAuthNotAuthorizedException:許可は失敗しました(サーバーは401で返信しました)。これは、消費者キーが正しくない場合、または署名が一致しなかった場合に発生する可能性があります。oauth.signpost.abstractoauthprovider.handleunexpectedResponse(abstoctoauthprovider.java:239)でoauth.signpost.signpost.abstractoauthprovider.retrievetoken(abstractoauthprovider.java:189) (AbstractoauthProvider.java:99)
素晴らしい/寛大な人から近いうちに連絡をくれるのを楽しみにしています :-)
ありがとう、サリル
正しい解決策はありません