【问题标题】:Google Sites API - Java - Getting a Content Feed using GoogleCredentialGoogle 协作平台 API - Java - 使用 GoogleCredential 获取内容提要
【发布时间】:2016-08-23 10:55:32
【问题描述】:

非常希望有人能提供帮助。

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

我现在想使用同一个 GoogleCredential 来检索同一个网站的 ContentFeed。问题是,提要似乎是空白的。我没有其他消息。

这是我所做的:

  1. 打开了开发控制台
  2. 创建了一个项目
  3. 创建了服务帐号
  4. 已下载服务帐号的 P12 文件
  5. 为项目启用了一套 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”是空的。就好像它试图抓取内容提要但有什么东西阻止了它。

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

有人可以帮忙吗?这可能是因为我的服务帐户用户没有获取内容提要的权限吗?即使我们使用的是以前允许我获取站点 Feed 的 GoogleCredential?

也许有一种方法可以验证内容提要确实已被检索到?现在我只有一个空字符串!!

如果您能提供任何帮助,我将不胜感激。

非常感谢

【问题讨论】:

    标签: java google-sites


    【解决方案1】:

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

    没有 Google 协作平台 API。 我建议您使用 Google Site Verification API,但它的功能比 Google Sites API 少。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-19
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      相关资源
      最近更新 更多