【发布时间】:2012-05-01 20:00:38
【问题描述】:
我正在尝试使用 OAuth 2.0 访问 Google 的 Documents List API 3.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,而不是直接使用 GoogleOAuthParameters:
String accessToken = oauthHelper.getAccessToken(oauthParameters);
【问题讨论】:
-
你能把你的解决方案放在一个答案中并接受这个答案吗?这样,问题就被标记为已解决,如果有人(出于任何原因)访问此帖子,将很容易找到答案。
标签: java oauth google-docs-api