2016-08-23 85 views
0

絕望地希望有人能夠提供幫助。Google Sites API - Java - 使用GoogleCredential獲取內容訂閱源

我正在使用gdata庫(Java)以及Oauth2和GoogleCredential對象來返回我的個人Google網站(不在應用程序域中)的SiteFeed。 SiteFeed返回正常。

我現在想要使用相同的GoogleCredential檢索相同網站的ContentFeed。麻煩的是,Feed似乎是空白的。我沒有其他消息。

這裏是我做了什麼:

  1. 拉開,開發者控制檯
  2. 創建了一個項目
  3. 創建一個服務帳戶
  4. 下載服務帳戶
  5. 啓用一套的P12文件的項目的API的
  6. 設置我的服務帳戶用戶具有授權
  7. 在我的谷歌網站我已經給予了相同的服務帳戶用戶「所有者」權限到我的網站根

這應該意味着服務用戶基本上可以做任何事情(我認爲)。

在我的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」是空的。就好像它試圖抓住內容提要,但有些東西阻止了它。

我知道,對於這個測試網站,有幾個簡單文本的基本頁面。

誰能幫助?這可能是因爲我的服務帳戶用戶沒有獲取內容供稿的權限嗎?即使我們使用之前允許我抓取Site Feed的GoogleCredential?

也許有一種方法可以驗證內容Feed是否確實已被檢索?現在我只有一個空字符串!

我真的很感謝你可以給予任何幫助。

非常感謝

回答