Я использую плагин grails oauth. Который успешно предоставляет мне access_token
Yahoo. Но проблема в том, что этот токен (от yahoo) действует только 1 час. И после этого нам нужно его обновить. И, просматривая их документацию, кажется, что у них есть процесс для ее обновления (в случае истечения срока действия токена). И этот вызов обходит третью ногу (процесс принятия руководства пользователя). это очень хорошо!
Теперь, если я пытаюсь использовать метод 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.java:99 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.
вот ссылка на страницу документации Yahoo для обновления accessToken. http://developer.yahoo.com/oauth/guide/oauth-refreshaccesstoken.html
Yahoo нужен параметр oauth_session_handle
в запросе, который отправляется Yahoo с accessToken. Signpost предоставляет способ получить это -- provider.getResponseParameters()
.
Теперь следующее: я использую следующий способ вернуть эти параметры в запрос refreshToken — Consumer.setAdditionalParameters(httpParams)
Но это не работает! Ниже приведена часть stacktrace. Когда я пытаюсь получить RefredAccessToken
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)
с нетерпением жду вестей от какого-нибудь замечательного/щедрого парня(ов) :-)
Спасибо, Салил