grailsoauthプラグインを使用しています。それは私にyahooをaccess_token
うまく提供しています。しかし、問題は-このトークン(yahooから)の有効期間は1時間のみです。その後、更新する必要があります。そして、彼らのドキュメントを見ると、彼らはそれを更新するプロセスを持っているようです(トークンが期限切れになった場合)。そして、この呼び出しは3番目のレッグをバイパスします(ユーザーの手動受け入れプロセス)。とても良いです!
さて、私がメソッドを使おうとしているのなら、これは(プロバイダー側で)urloauthService.fetchAccessToken
をヒットするメソッドだと思います。get_access_token
しかし、私は例外を得ています:
oauth.signpost.exception.OAuthNotAuthorizedException:承認に失敗しました(サーバーが401で応答しました)。これは、コンシューマキーが正しくないか、署名が一致しなかった場合に発生する可能性があります。oauth.signpost.AbstractOAuthProvider.handleUnexpectedResponse(AbstractOAuthProvider.java:239)at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:189)at oauth.signpost.AbstractOAuthProvider.retrieveAccessToken(AbstractOAuthProvider.java:99)at oauth.sign OAuthProvider $ retrieveAccessToken.call(Unknown Source)at org.grails.plugins.oauth.OauthService.fetchAccessToken(OauthService.groovy:286)at org.grails.plugins.oauth.OauthService $ fetchAccessToken.call(Unknown Source)
プラグインと道標のコードをさらにデバッグしました。そして、私たちは(今のところ)道標を調べるべきだと思います。プラグインは後で簡単に変更できます。
参考までに、commonshttp4クライアントで道標(jar-1.2.1.1)を使用しています
accessTokenを更新するためのYahooドキュメントページのリンクは次のとおりです。 http://developer.yahoo.com/oauth/guide/oauth-refreshaccesstoken.html
Yahooはoauth_session_handle
、accessTokenを使用してyahooによって送信されるリクエストにパラメーターを必要とします。道標はこれをフェッチする方法を提供します- provider.getResponseParameters()
。
次は、次の方法を使用して、これらのパラメーターをrefreshTokenリクエストに戻します--consumer.setAdditionalParameters(httpParams)
しかし、それは機能しません!以下は、スタックトレースの一部です。refreshedAccessTokenを取得しようとすると
oauth.signpost.exception.OAuthNotAuthorizedException:承認に失敗しました(サーバーが401で応答しました)。これは、コンシューマキーが正しくないか、署名が一致しなかった場合に発生する可能性があります。oauth.signpost.AbstractOAuthProvider.handleUnexpectedResponse(AbstractOAuthProvider.java:239)at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:189)at oauth.signpost.AbstractOAuthProvider.retrieveAccessToken(AbstractOAuthProvider.java:99)
素晴らしい/寛大な人からすぐに聞くのを楽しみにしています:-)
ありがとう、サリル