【发布时间】:2016-08-23 10:55:32
【问题描述】:
非常希望有人能提供帮助。
我正在使用 gdata 库 (Java) 以及 Oauth2 和 GoogleCredential 对象来返回我的个人 Google 站点(不在 Apps 域中)的 SiteFeed。 SiteFeed 可以正常返回。
我现在想使用同一个 GoogleCredential 来检索同一个网站的 ContentFeed。问题是,提要似乎是空白的。我没有其他消息。
这是我所做的:
- 打开了开发控制台
- 创建了一个项目
- 创建了服务帐号
- 已下载服务帐号的 P12 文件
- 为项目启用了一套 API
- 将我的服务帐户用户设置为具有委派权限
- 在我的 Google 网站上,我已向我的网站根目录授予相同的服务帐户用户“所有者”权限
这应该意味着服务用户基本上可以做任何事情(我认为)。
在我的 Java 类 I 中:
-
创建一个 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); } -
调用以使用经过身份验证的服务获取站点提要(这可行)
siteFeed = service.getFeed(SITES_FEED_URL, SiteFeed.class); -
调用以使用相同的经过身份验证的服务获取站点内容提要(这不起作用)
//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