2015-10-12 103 views
0

我试图从com.google.gdata.data.spreadsheet.SpreadsheetEntry中获取工作表。

认证工作:

GoogleCredential credential = authorize(); 
    SpreadsheetService service = new SpreadsheetService("My Project"); 
    service.setProtocolVersion(SpreadsheetService.Versions.V3); 
    service.setOAuth2Credentials(credential); 

我可以得到电子表格条目:

URL SPREADSHEET_FEED_URL = new URL("https://spreadsheets.google.com/feeds/spreadsheets/private/full"); 
    SpreadsheetFeed feed = service.getFeed(SPREADSHEET_FEED_URL, SpreadsheetFeed.class); 
    List<SpreadsheetEntry> spreadsheets = feed.getEntries(); 

但只要我所说的spreadsheet.getWorksheets()方法,我得到以下错误:

com.google.gdata.client.GoogleService $ SessionExpiredException:未授权

我的授权方法如下所示:

File p12 = new File("src/main/resources/My Project-e81707237c5b.p12"); 
    HttpTransport httpTransport = new NetHttpTransport(); 
    JacksonFactory jsonFactory = new JacksonFactory(); 
    String [] SCOPESArray= { 
      "https://spreadsheets.google.com/feeds/spreadsheets/private/full" 
    }; 
    final List SCOPES = Arrays.asList(SCOPESArray); 
    GoogleCredential credential = new GoogleCredential.Builder() 
      .setTransport(httpTransport) 
      .setJsonFactory(jsonFactory) 
      .setServiceAccountId("[email protected]account.com") 
      .setServiceAccountScopes(SCOPES) 
      .setServiceAccountPrivateKeyFromP12File(p12) 
      .build(); 

回答

0

我缺少两个服务帐户范围。以下是所需的示波器:

String [] SCOPESArray= { 
      "https://spreadsheets.google.com/feeds", 
      "https://spreadsheets.google.com/feeds/spreadsheets/private/full", 
      "https://docs.google.com/feeds" 
    };