2016-08-23 90 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是否确实已被检索?现在我只有一个空字符串!

我真的很感谢你可以给予任何帮助。

非常感谢

回答