Sign-Post API に基づく grails-oauth プラグインを使用して Yahoo Oauth アクセス トークンを更新する

StackOverflow https://stackoverflow.com/questions/7415279

質問

私は 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)

素晴らしい/寛大な人から近いうちに連絡をくれるのを楽しみにしています :-)

ありがとう、サリル

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top