私はこれを機能させようとしています。クライアントのログイン方法 (ユーザー名/パスワード) を使用すると問題なく動作しますが、宣誓を使用すると動作しません。理由を知りたいです。
Java言語ガイド(v1.4)のこのコードを使用しています
パスによるページの取得
Google サイト内のページの相対パスがわかっている場合は、パス パラメータを使用してその特定のページを取得できます。この例では、 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");
エラーはスローされませんが、明らかにサイト内のすべてのページが返されます。