Я пытаюсь использовать Drive API и клиентскую библиотеку Google Java для получения «новой версии» Сайтов Google, к которой имеет доступ отдельный пользователь в нашем домене.
Я могу получить сайты,но только если у пользователя есть права «редактировать» для сайта.Если я установлю для пользователя «только просмотр опубликованного сайта», этот сайт не будет отображаться в результатах (см. Фрагмент кода ниже).
У меня также возникают проблемы при получении URL-адреса опубликованного сайта из службы.Любая помощь приветствуется.
public Response getFiles(@PathParam("userId") String userId) throws GeneralSecurityException, IOException {
Drive service = GoogleServices.getDriveService(userId);
Files.List list = service.files().list()
.setOrderBy("name")
.setQ("mimeType = 'application/vnd.google-apps.site'")
.setFields("nextPageToken, files(*)")
.setPageSize(100);
for (File fileObj : files.getFiles()) {
System.out.println("fileobj:" + fileObj.toPrettyString());
}
}
public static Drive getDriveService(String userEmail) throws GeneralSecurityException,IOException {
HttpTransport httpTransport = new NetHttpTransport();
JacksonFactory jsonFactory = new JacksonFactory();
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setServiceAccountScopes(Arrays.asList(DriveScopes.DRIVE))
.setServiceAccountUser(userEmail)
.setServiceAccountPrivateKeyFromP12File(
new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))
.build();
Drive service = new Drive.Builder(httpTransport, jsonFactory, null)
.setApplicationName("Drive Service")
.setHttpRequestInitializer(credential).build();
return service;
}