У меня возникают проблемы с вызовом twitter REST API с помощью Java-клиента Google OAuth < / а>. Я могу правильно сделать первые шаги:
- Установите URL-адрес авторизации,
- Получите временный токен,
- Сгенерируйте последний токен.
Затем OAuth Javadoc говорит:
Используйте сохраненный токен доступа для авторизации HTTP-запросов к защищенным ресурсам, задав OAuthParameters.token и используя OAuthParameters в качестве HttpRequestInitializer.
Именно на этом этапе у меня возникают проблемы. Прежде всего, если я установлю только значение OAuthParameters.token, я получу нулевое исключение, потому что подписывающая сторона не установлена, поэтому в настоящее время у меня есть:
OAuthHmacSigner signer = new OAuthHmacSigner();
signer.clientSharedSecret=TWITTER_CONSUMER_SECRET;
String oauthToken = req.getParameter("oauth_token");
String oauthVerifier = req.getParameter("oauth_verifier");
OAuthGetAccessToken accessTokenRequest = new OAuthGetAccessToken(TWITTER_ACESS_TOKEN_URL);
accessTokenRequest.consumerKey=TWITTER_CONSUMER_KEY;
accessTokenRequest.signer=signer;
accessTokenRequest.transport=HTTP_TRANSPORT;
accessTokenRequest.temporaryToken=oauthToken;
accessTokenRequest.verifier=oauthVerifier;
OAuthCredentialsResponse credentials = accessTokenRequest.execute();
String token = credentials.token;
OAuthParameters params = new OAuthParameters();
params.token=token;
params.version="1.0";
params.consumerKey=TWITTER_CONSUMER_KEY;
params.signer=signer;
HttpRequestFactory requestFactory = HTTP_TRANSPORT.createRequestFactory(params);
HttpResponse twResponse = requestFactory.buildGetRequest(new GenericUrl("https://api.twitter.com/1.1/account/verify_credentials.json")).execute();
Результат всегда:
ВНИМАНИЕ: ошибка аутентификации: невозможно ответить ни на одну из этих проблем: {} com.google.api.client.http.HttpResponseException: 401 OK {"errors": [{"message": "Не удалось аутентифицировать вас", "code ": 32}]}
Если я попробую заголовок авторизации, предоставленный инструментом Twitter OAuth через инструмент расширения REST Chrome, он будет работать отлично, так что это не проблема с учетной записью. Когда я меняю его на значение заголовка авторизации, вычисленное клиентской библиотекой Google OAuth Java, оно не работает.
Я не понимаю, что делаю неправильно.
Решение. Следуйте инструкциям по ссылке, предоставленной @Arkanon, я пропустил обновление секретного токена подписывающего лица:
signer.tokenSharedSecret