#java #spring-boot #google-drive-api #google-workspace
#java #spring-boot #google-drive-api #google-workspace
Вопрос:
Я пытаюсь создать файл в папке Google Drive.
Чтение из папки работает. Я уже читаю файлы в разных приложениях с разными учетными записями служб.
Я поделился своей папкой на диске G Suite с сгенерированной электронной почтой учетной записи службы и предоставил ей доступ к редактору (чтение, запись, редактирование).
Я попытался скопировать существующий файл (но также создать пустой с нуля) из моего приложения Java Springboot.
public class TemplateDocumentManager {
@Value("${printing.template.id}")
private String baseTemplateFileId;
@Autowired
private Drive driveService;
public void createNewContractFromEmptyTemplate() throws IOException {
File templateFile = getDriveFiles().get(baseTemplateFileId).execute();
File newFileInstance = getDriveFiles()
.copy(baseTemplateFileId, templateFile)
.setSupportsAllDrives(true)
.execute();
log.error("Id of newly created file is: {}", newFileInstance.getId());
}
protected Drive.Files getDriveFiles() {
return driveService.files();
}
}
Служба Google Drive, введенная с @Autowired
аннотацией, работает правильно. Он создается следующим образом:
@Configuration
public class DriveService {
public static final String APPLICATION_NAME = "appname";
@Autowired
GoogleCredential googleCredential;
@Bean("driveService")
public Drive createDriveService() throws GeneralSecurityException, IOException {
return new Drive.Builder(GoogleNetHttpTransport.newTrustedTransport(), JacksonFactory.getDefaultInstance(), googleCredential)
.setApplicationName(APPLICATION_NAME)
.build();
}
...
}
Есть идеи о том, что учетная запись службы должна иметь возможность записывать в папку диска G Suite?
Комментарии:
1. Включен ли Drive API для проекта и учетной записи службы?
2. @Антенны да! Я могу легко читать из него.
Ответ №1:
Вы должны предоставить необходимые разрешения объекту GoogleCredentials, т. е.
GoogleCredential.fromStream(source).createScoped(scopes)
Области могут быть найдены, например, в SheetsScopes или DriveScopes (в зависимости от ваших зависимостей от Google)
Комментарии:
1. Да, это верно. Я дважды назначал области. Во второй раз замена их только
read
разрешениями.