2016-08-23 2 views
0

Отчаянно надеясь, что кто-то может помочь.API сайтов Google - Java - Получение фида контента с использованием GoogleCredential

Я использую библиотеку gdata (Java) вместе с Oauth2 и объектом GoogleCredential для возврата SiteFeed моего личного сайта Google (не в домене Apps). SiteFeed возвращается штраф.

Теперь я хочу использовать тот же GoogleCredential для извлечения ContentFeed для того же сайта. Проблема в том, что фид кажется пустым. У меня нет других сообщений.

Вот что я сделал:

  1. Открыл Dev консоль
  2. создал проект
  3. создал учетную запись службы
  4. выгружен файл P12 для учетной записи службы
  5. Enabled набора API для проекта
  6. Установите, чтобы мой пользователь учетной записи службы имел делегированные полномочия
  7. На моем сайте Google я предоставил учетную запись пользователя разрешение «владелец» же обслуживание на мой сайте корень

Это должно означать, что пользователь услуг может в принципе сделать что-нибудь (я думаю).

В моем классе Java I:

  1. Создать GoogleCredential объект и добавить его к объекту SitesService

    static SitesService service;  
    public static void setSiteAuthenticationService(...all string values...){ 
        SITES_FEED_URL = new URL(urlString); 
        File p12 = new File(p12Location); 
        HttpTransport httpTransport = new NetHttpTransport(); 
        JacksonFactory jsonFactory = new JacksonFactory(); 
        String[] SCOPESArray = {scopeUrl}; 
        final List SCOPES = Arrays.asList(SCOPESArray); 
    
        GoogleCredential credential = new GoogleCredential.Builder() 
         .setTransport(httpTransport) 
         .setJsonFactory(jsonFactory) 
         .setServiceAccountId(accountId) 
         .setServiceAccountScopes(SCOPES) 
         .setServiceAccountPrivateKeyFromP12File(p12) 
         .build(); 
    
    service = new SitesService("pgts-search"); 
    service.setOAuth2Credentials(credential); 
    //service.useSsl(); 
    service.setConnectTimeout(120000); 
    } 
    
  2. Позвоните, чтобы получить поток сайта с использованием проверенного сервиса (это работает)

    siteFeed = service.getFeed(SITES_FEED_URL, SiteFeed.class); 
    
  3. Позвоните, чтобы получить ленту содержимого сайта используя ту же услугу аутентификации (это не работает)

    //iterate over the site entries 
    for (SiteEntry siteEntry : feedly.getEntries()){ 
        //for each entry grab the content feed 
        ContentFeed contentFeed = 
        getContentFeed(sitesDomain, siteEntry.getSiteName().getValue()); 
    } 
    
    //and then, iterate over each WebPageEntry (adding to an XML string) 
    for (WebPageEntry entry : contentFeed.getEntries(WebPageEntry.class)) { 
        log.error("Found web page entry."); 
        xmlString = ""; 
        xmlString += "<doc>"; 
        xmlString += "<title>" + entry.getTitle().getPlainText() + "</title>"; 
        xmlString += "</doc>"; 
    }//end of for loop 
    

По существу, после того, как все это, строка «xmlString» пуста. Это похоже на попытку захвата фида контента, но что-то его останавливает.

Я знаю, что для этого тестового сайта есть пара основных страниц с простым текстом на них.

Может ли кто-нибудь помочь? Может ли это быть фактом, что у моего пользователя учетной записи службы нет разрешений на захват Content Feed? Даже если мы используем GoogleCredential, который ранее позволял мне захватывать фид сайта?

Возможно, существует ли способ проверить, действительно ли был доставлен канал контента? Прямо сейчас у меня просто пустая строка!

Я бы очень признателен за любую помощь, которую вы могли бы дать.

Большое спасибо

ответ

0

Я считаю, что API Google Sites устарел. Посмотрите на поддерживаемые API Google. https://developers.google.com/api-client-library/java/apis/

Не существует API сайтов Google. Я рекомендую вам использовать API проверки сайта Google, но у него меньше возможностей, чем API сайтов Google.