Неверный токен при выполнении запроса на фид контента на сайтах Google при использовании присяги - PullRequest
1 голос
/ 04 марта 2012

Я пытаюсь заставить это работать.Он работает нормально, когда я использую метод входа клиента (имя пользователя / пароль), но с клятвой он не работает.Я хотел бы знать, почему.

Я использую этот фрагмент кода из Руководство по языку 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());
}

Если я использую метод входа в систему клиента, все работает нормально.Однако, когда я использую Клятву (Двуногую), я получаю следующий ответ:

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

Ошибка не выдается, но, очевидно, она вернет все страницы сайта.

1 Ответ

0 голосов
/ 24 декабря 2013

Ваш сайт публичный?или вы включили РАЗРЕШЕНИЯ НА УРОВЕНЬ СТРАНИЦЫ, и на этой конкретной странице ограничено количество людей, которые могут просматривать / редактировать доступ?

...