絕望地希望有人能夠提供幫助。Google Sites API - Java - 使用GoogleCredential獲取內容訂閱源
我正在使用gdata庫(Java)以及Oauth2和GoogleCredential對象來返回我的個人Google網站(不在應用程序域中)的SiteFeed。 SiteFeed返回正常。
我現在想要使用相同的GoogleCredential檢索相同網站的ContentFeed。麻煩的是,Feed似乎是空白的。我沒有其他消息。
這裏是我做了什麼:
- 拉開,開發者控制檯
- 創建了一個項目
- 創建一個服務帳戶
- 下載服務帳戶
- 啓用一套的P12文件的項目的API的
- 設置我的服務帳戶用戶具有授權
- 在我的谷歌網站我已經給予了相同的服務帳戶用戶「所有者」權限到我的網站根
這應該意味着服務用戶基本上可以做任何事情(我認爲)。
在我的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」是空的。就好像它試圖抓住內容提要,但有些東西阻止了它。
我知道,對於這個測試網站,有幾個簡單文本的基本頁面。
誰能幫助?這可能是因爲我的服務帳戶用戶沒有獲取內容供稿的權限嗎?即使我們使用之前允許我抓取Site Feed的GoogleCredential?
也許有一種方法可以驗證內容Feed是否確實已被檢索?現在我只有一個空字符串!
我真的很感謝你可以給予任何幫助。
非常感謝