我正在使用 grails oauth 插件。这为我提供了雅虎的access_token
成功。但问题是——这个令牌(来自雅虎)的有效期仅为 1 小时。之后我们需要刷新它。并且通过他们的文档,他们似乎有刷新它的过程(以防令牌过期)。而这个调用绕过了第三条腿(用户的手动接受过程)。这是非常好的!
现在,如果我尝试使用方法oauthService.fetchAccessToken
——我想这是命中get_access_token
url 的方法(在提供者方面)。但我得到了例外:
oauth.signpost.exception.OAuthNotAuthorizedException:授权失败(服务器回复 401)。如果使用者密钥不正确或签名不匹配,则可能会发生这种情况。在 oauth.signpost.AbstractOAuthProvider.handleUnexpectedResponse(AbstractOAuthProvider.java:239) 在 oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:189) 在 oauth.signpost.AbstractOAuthProvider.retrieveAccessToken(AbstractOAuthProvider.java:99) 在 oauth.signpost。 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
雅虎oauth_session_handle
在请求中需要参数,该参数由雅虎使用 accessToken 发送。路标确实提供了一种获取此信息的方法—— provider.getResponseParameters()
。
现在接下来是,我使用以下方式将这些参数放回 refreshToken 请求 - consumer.setAdditionalParameters(httpParams)
但它不起作用!以下是堆栈跟踪的一部分。当我尝试获取 refreshedAccessToken
oauth.signpost.exception.OAuthNotAuthorizedException:授权失败(服务器回复 401)。如果使用者密钥不正确或签名不匹配,则可能会发生这种情况。在 oauth.signpost.AbstractOAuthProvider.handleUnexpectedResponse(AbstractOAuthProvider.java:239) 在 oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:189) 在 oauth.signpost.AbstractOAuthProvider.retrieveAccessToken(AbstractOAuthProvider.java:99)
期待很快收到一些伟大/慷慨的人的消息:-)
谢谢, 萨利尔