我正在使用grails oauth插件。這是爲我成功提供了雅虎的access_token
。但問題是 - 這個令牌(來自雅虎)只有1小時的有效期。之後,我們需要刷新它。並通過他們的文檔,似乎他們有過程來刷新它(萬一令牌過期)。這個呼叫繞過第三條腿(用戶手冊驗收過程)。這是非常好的!使用grails-oauth插件刷新Yahoo Oauth訪問令牌基於簽名後api
現在,如果我正在嘗試使用方法oauthService.fetchAccessToken
- 我想這是在URL(在提供者方)打get_access_token
的方法。但我得到異常:
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(未知 來源)在 org.grails.plugins.oauth.OauthService.fetchAccessToken(OauthService.groovy:286) 在 org.grails.plugins.oauth.OauthService $ fetchAccessToken .call(未知 來源)
我已經進一步調試到插件和路標代碼。我認爲我們應該研究路標(現在),插件可以稍後修改。
爲了您的信息,我使用的路標(JAR - 1.2.1.1)與commonshttp4客戶
這裏是雅虎文檔頁面的刷新了的accessToken的鏈接。 http://developer.yahoo.com/oauth/guide/oauth-refreshaccesstoken.html
雅虎需要oauth_session_handle
參數在雅虎通過accessToken發送的請求中。路標確實提供了一種獲取此的方法 - provider.getResponseParameters()
。
現在接下來是,我使用下面的方法把這些參數回refreshToken要求 - consumer.setAdditionalParameters(的HttpParams)
但它不工作!以下是stacktrace的一部分。當我試圖讓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)
期待着一些偉大的/慷慨的傢伙(S):-)
感謝很快聽到, 薩里爾
謝謝!這節省了我很多時間和頭痛! – Craigo