3

Я пытаюсь загрузить файл на диск Google, и я хочу установить для него общий доступ, но я не знаю, как это сделать ... I пытался использовать этот код, но файл загружается без общего разрешения.Google api, загружать файл с общим разрешением

Мой код:

// _drive - google drive object 
Google.Apis.Drive.v2.Data.File item = new Google.Apis.Drive.v2.Data.File(); 

Permission permission = new Permission(); 
permission.Role = "reader"; 
permission.Type = "anyone"; 
permission.WithLink = true; 

item.Permissions = new List<Permission>() { permission }; 
FilesResource.InsertMediaUpload request = _drive.Files.Insert(item, fileStream, mimeType); 
request.Upload(); 
+0

Просто любопытно. можете ли вы попробовать и сделать патч на разрешениях после того, как вы загрузили файл и посмотреть, работает ли это? Я задаюсь вопросом, работает ли его ошибка в клиентской библиотеке, что вы делаете. – DaImTo

+0

Да, если я изменю разрешение после загрузки файла - его работу. Но в этом случае я потрачу одну избыточную квоту накопителя ... – SkyDancer

+0

Вероятно, это ошибка в клиентской библиотеке. попробуйте добавить проблему https://code.google.com/p/google-api-dotnet-client/issues/list. Я проверю ее, когда вернусь домой. но, как я уже сказал, ваш код выглядит правильно. – DaImTo

ответ

2

ОК я провел последний час, играя с этим. Если вы проверите документацию Files.insert, на самом деле это не означает, что вы должны иметь возможность устанавливать разрешения во время вставки.

Внизу, если вы проверите попробуйте. Установка прав доступа, как вы делали выше, под Request body.

enter image description here

Это делает загрузить файл. Но возвращенный Джон дал нам ключ.

"shared": false, 

Теперь, если я проверить файл в Google диск

enter image description here

Это приводит меня к мысли, что это не поддерживается API Google Drive. Это не можно установить разрешения во время загрузки. Вам нужно будет создать отдельный вызов для установки разрешений после того, как вы загрузили файл.

Хотя похоже, что тело поддерживает разрешения, которые, похоже, не работают. Я не уверен, что это ошибка или что-то, что просто не поддерживается. Я посмотрю, смогу ли я найти местоположение трекера проблем для Диска и добавить его в качестве проблемы.

В то же время вам придется совершать два звонка и есть немного вашей квоты.

Issue 3717: Google drive api, upload file with shared permission

1

также испытал эту ошибку. Указание разрешений в одной и той же загрузке файла/каталога пришлось выполнять в отдельном запросе, как показано ниже. Документация API Google Диска не совсем понятна (и не ясно, как обращаться с правами на доступ к файлам при использовании учетной записи службы).

var NewDirRequest = DService.Files.Insert(GoogleDir); 
var NewDir = NewDirRequest.Execute(); 
GoogleFolderID = NewDir.Id; 

var NewPermissionsRequest = DService.Permissions.Insert(new Permission() 
{ 
    Kind = "drive#permission", 
    Value = emailAddress, 
    Role = "writer", 
    Type = "user" 
}, GoogleFolderID); 

DService.Permissions.Insert(new Permission() 
{ 
    Kind = "drive#permission", 
    Value = "mydomain.com", 
    Role = "reader", 
    Type = "domain" 
}, GoogleFolderID); 

NewPermissionsRequest.Execute();