我正在努力让它发挥作用。当我使用客户端登录方法(用户名/密码)时它工作正常,但使用 oath 它不起作用。我想知道为什么。
按路径检索页面
如果您知道 Google 站点中某个页面的相对路径,则可以使用 path 参数来获取该特定页面。此示例将返回位于 http://sites.google.com/site/siteName/path/to/the/page的页面:
ContentQuery query = new ContentQuery(new URL(buildContentFeedUrl()));
query.setPath("/path/to/the/page");
ContentFeed contentFeed = client.getFeed(query, ContentFeed.class);
for (BaseContentEntry<?> entry : contentFeed.getEntries()) {
System.out.println(" title: " + entry.getTitle().getPlainText());
}
如果我使用客户端登录方法一切正常。但是,当我使用 Oath (Two-legged) 时,我得到以下响应:
com.google.gdata.util.AuthenticationException: Token invalid - Invalid token:
<HTML>
<HEAD>
<TITLE>Token invalid - Invalid token: </TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Token invalid - Invalid token: </H1>
<H2>Error 401</H2>
</BODY>
</HTML>
这个版本工作正常:
SitesService client = new SitesService("Test");
client.setUserCredentials(USER_NAME, PASSWORD);
ContentQuery query = new ContentQuery(new URL(
"https://sites.google.com/feeds/content/" + DOMAIN + "/" + SITE_NAME + "/"));
query.setPath("/7D502A5D7080697F65F838D56C4C4A09");
ContentFeed contentFeed = client.getFeed(query, ContentFeed.class);
for (BaseContentEntry entry : contentFeed.getEntries()) {
System.out.println("Title: " + entry.getTitle().getPlainText());
}
这个版本抛出错误:
SitesService client = new SitesService("Test");
GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
oauthParameters.setScope("https://sites.google.com/feeds/content/");
client.setOAuthCredentials(oauthParameters, new OAuthHmacSha1Signer());
ContentQuery query = new ContentQuery(new URL(
"https://sites.google.com/feeds/content/" + DOMAIN + "/" + SITE_NAME + "/"
+ "?xoauth_requestor_id=" + USER_NAME));
query.setPath("/7D502A5D7080697F65F838D56C4C4A09");
ContentFeed contentFeed = client.getFeed(query, ContentFeed.class);
for (BaseContentEntry entry : contentFeed.getEntries()) {
System.out.println("Title: " + entry.getTitle().getPlainText());
}
我还注意到,当我删除该行时:
query.setPath("/7D502A5D7080697F65F838D56C4C4A09");
错误不会被抛出,但显然它会返回站点中的所有页面。