1

私はこれを機能させようとしています。クライアントのログイン方法 (ユーザー名/パスワード) を使用すると問題なく動作しますが、宣誓を使用すると動作しません。理由を知りたいです。

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");

エラーはスローされませんが、明らかにサイト内のすべてのページが返されます。

4

1 に答える 1

0

あなたのサイトは公開されていますか?または、ページ レベルの許可を有効にして、その特定のページに表示/編集アクセスできる人数が制限されていますか?
これが理由かもしれません。

于 2013-12-24T07:28:49.190 に答える