Я пытаюсь получить доступ к Google Documents List API 3.0 с помощью OAuth 2.0, но у меня возникают проблемы с ошибкой 401.
После того, как пользователь принял, мой код выглядит следующим образом:
GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
oauthParameters.setOAuthConsumerKey(CLIENT_ID);
oauthParameters.setOAuthConsumerSecret(CLIENT_SECRET);
oauthParameters.setOAuthToken(token);
oauthParameters.setOAuthTokenSecret(tokenSecret);
oauthParameters.setScope("https://docs.google.com/feeds/");
service = new DocsService("myapp");
service.setOAuthCredentials(oauthParameters, new OAuthHmacSha1Signer());
DocumentListFeed feed = service.getFeed(new URL("https://docs.google.com/feeds/default/private/full/?v=3"), DocumentListFeed.class);
Затем, в последней строке -getFeed ()-выдает исключение:
com.google.gdata.util.AuthenticationException: Token invalid - Invalid token: Request token used when not allowed.
<HTML>
<HEAD>
<TITLE>Token invalid - Invalid token: Request token used when not allowed.</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Token invalid - Invalid token: Request token used when not allowed.</H1>
<H2>Error 401</H2>
</BODY>
</HTML>
Что происходит? На статическом основном тестовом классе работает как шарм, но когда я запускаю его на сервере, эта строка больше не работает. Любая идея?
РЕШЕНО
Токен доступа необходимо получить таким образом, с помощью GoogleOAuthHelper, а не напрямую с параметрами GoogleOAuth:
String accessToken = oauthHelper.getAccessToken(oauthParameters);