我目前正在使用Google Spreadsheets API访问电子表格。以下是我用来建立凭据的一些代码。
try
{
InputStream p12 = BotPanel.class.getResourceAsStream("/key.p12");
File file = new File("hi");
OutputStream outputStream = new FileOutputStream(file);
IOUtils.copy(p12, outputStream);
outputStream.close();
String emailAddress = "81607255786-225dt8i2s8q6qgi0lgg814p27mumqro2@developer.gserviceaccount.com";
HttpTransport httpTransport = new NetHttpTransport();
JacksonFactory jsonFactory = new JacksonFactory();
String[] SCOPESArray = { "https://spreadsheets.google.com/feeds", "https://spreadsheets.google.com/feeds/spreadsheets/private/full", "https://docs.google.com/feeds" };
final List SCOPES = Arrays.asList(SCOPESArray);
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport).setJsonFactory(jsonFactory)
.setServiceAccountId(emailAddress).setServiceAccountScopes(SCOPES)
.setServiceAccountPrivateKeyFromP12File(file)
.build();
file.delete();
service = new SpreadsheetService("Test");
service.setOAuth2Credentials(credential);
} catch (Exception e)
{
e.printStackTrace();
}
此代码大约在一周前开始工作,我访问电子表格的方式是使用电子表格供稿网址。请注意,通过此服务帐户,我在自己的个人帐户下共享了一个电子表格,以便服务帐户可以访问它。现在,当我尝试获取电子表格Feed时,我得到一个空列表。我还没有改变任何与Google驱动器相关的代码,所以如果有API的更新或我错过的内容,我将很高兴知道发生了什么。