我有一个简单的程序,可以使用驱动SDK在Google云端硬盘中插入doc。我正在使用服务帐户:
try {
credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId("1090759145727-abc@developer.gserviceaccount.com")
.setServiceAccountScopes(Arrays.asList(DriveScopes.DRIVE))
.setServiceAccountUser("1090759145727-abc@developer.gserviceaccount.com")
.setServiceAccountPrivateKeyFromP12File(
new java.io.File(url.getPath())).build();
} catch (GeneralSecurityException e) {
System.out.println(e);
e.printStackTrace();
} catch (IOException e) {
System.out.println(e);
e.printStackTrace();
}
Drive driveService = new Drive.Builder(httpTransport, jsonFactory, null)
.setHttpRequestInitializer(credential)
.setApplicationName("guestbook").build();
File body = new File();
body.setTitle("Test document");
body.setDescription("Test file descrition");
body.setMimeType("text/html");
java.io.File fileContent = new java.io.File("index.html");
FileContent mediaContent = new FileContent("text/html", fileContent);
File file = driveService.files().insert(body, mediaContent).execute();
使用上面的代码index.html
文件插入驱动器。我能够通过记录来自fileId
对象的file
来确认。但是,我无法在我的google云端硬盘帐户中查看该文件。
如果我使用我的Gmail帐户共享该文件,我可以在我的云端硬盘帐户中查看该文件。
Permission permission = new Permission();
permission.setId("xyz@gmail.com");
permission.setType("user");
permission.setRole("writer");
Insert insert = driveService.permissions().insert(file.getId(), permission);
insert.execute();
我也无法获得导出链接Map
。导出链接映射到null
。
Map<String, String> links = file.getExportLinks();
使用服务帐户时: