Google Sites API - Java - 使用GoogleCredential获取内容Feed

时间:2016-08-23 10:55:33

标签: java google-sites

绝望地希望有人可以提供帮助。

我正在使用gdata库(Java)以及Oauth2和GoogleCredential对象来返回我个人Google网站的SiteFeed(不在Apps域中)。 SiteFeed被罚款。

我现在想使用相同的GoogleCredential来检索同一网站的ContentFeed。麻烦的是,饲料似乎是空白的。我没有其他消息。

这就是我所做的:

  1. 打开开发控制台
  2. 创建了一个项目
  3. 创建了一个服务帐户
  4. 下载服务帐户的P12文件
  5. 为项目启用了一套API
  6. 将我的服务帐户用户设置为具有委派权限
  7. 在我的Google网站上,我已授予相同的服务帐户用户'所有者'对我的站点root的权限
  8. 这应该意味着服务用户基本上可以做任何事情(我认为)。

    在我的Java类中我:

    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. 使用经过身份验证的服务调用以获取网站Feed(此方法有效)

      siteFeed = service.getFeed(SITES_FEED_URL, SiteFeed.class);
      
    3. 使用相同的经过身份验证的服务调用获取网站内容Feed(这不起作用)

      //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
      
    4. 基本上,在所有这些之后,String&#34; xmlString&#34;是空的。就好像它试图抓住内容提要但有些东西正在停止它。

      我知道对于这个测试网站,有几个基本页面上有简单的文字。

      有人可以帮忙吗?这可能是因为我的服务帐户用户无权获取内容Feed吗?即使我们使用之前允许我抓住网站Feed的GoogleCredential吗?

      也许有办法验证内容Feed确实已被检索?现在我只有一个空字符串!!

      我真的很感激你能给予的任何帮助。

      非常感谢

1 个答案:

答案 0 :(得分:0)

我认为Google Sites API已经过时了。 查看支持的Google API。 https://developers.google.com/api-client-library/java/apis/

没有Google Sites API。 我建议您使用Google Site Verification API,但它的功能少于Google Sites API。