Почему я не могу загрузить файл в общую папку на Google Drive, но перечисление файлов работает?JAVA

Программисты JAVA общаются здесь
Anonymous
Почему я не могу загрузить файл в общую папку на Google Drive, но перечисление файлов работает?

Сообщение Anonymous »

У меня есть диск, связанный с моей учетной записью Google, и я создал учетную запись службы, с которой я могу использовать API Google Drive. Я поделился папкой в моем диске с учетной записью службы, которая имеет разрешения «редактора».

Код: Выделить всё

import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.FileContent;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.drive.Drive;
import com.google.api.services.drive.DriveScopes;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;

void main() throws Exception {
Drive drive = createDrive();

var localFile = fileOf("some-file");
uploadFile(drive, localFile);
}

private Drive createDrive() throws Exception {
String fileName = System.getenv("CREDENTIALS_FILE");

var credentialFileStream = getClass().getResourceAsStream(fileName);

var credentials = GoogleCredentials
.fromStream(credentialFileStream)
.createScoped(DriveScopes.DRIVE);

var builder =
new Drive.Builder(
GoogleNetHttpTransport.newTrustedTransport(),
GsonFactory.getDefaultInstance(),
new HttpCredentialsAdapter(credentials)
);

return builder.setApplicationName("My app").build();
}

private File fileOf(String name) throws URISyntaxException {
var uri = getClass().getResource(name).toURI();

return new File(uri);
}

private void uploadFile(Drive drive, File localFile) throws IOException {
var metadata = new com.google.api.services.drive.model.File();
metadata.setName(localFile.getName());
metadata.setParents(List.of("my-shared-folder-id"));

var content = new FileContent("text/plain", localFile);

drive
.files()
.create(metadata, content)
.setFields("id")
.execute();
}
< /code>
Это сбои с: < /p>
Exception in thread "main" com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
< /code>
Где конкретная ошибка в ответе: < /p>
{
"code": 403,
"errors": [
{
"domain": "usageLimits",
"message": "Service Accounts do not have storage quota. Leverage shared drives (https://developers.google.com/workspace/drive/api/guides/about-shareddrives), or use OAuth delegation (http://support.google.com/a/answer/7281227) instead.",
"reason": "storageQuotaExceeded"
}
],
"message": "Service Accounts do not have storage quota. Leverage shared drives (https://developers.google.com/workspace/drive/api/guides/about-shareddrives), or use OAuth delegation (http://support.google.com/a/answer/7281227) instead."
}
< /code>
Я не понимаю, что делаю не так. Я могу успешно  list  файлы в общей папке с использованием той же учетной записи службы (если я изменяюсь с использования drivescopes.drive 
на DriveScopes.drive_metadata ).


Подробнее здесь: https://stackoverflow.com/questions/797 ... ut-listing

Вернуться в «JAVA»