我正在尝试将文件上传到Google驱动器,我想设置“共享”#39;对此文件的许可,但我不知道如何做到这一点...... 我尝试使用此代码,但文件是在没有共享权限的情况下上传的。
我的代码是:
// _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 :(得分:2)
好的,我花了最后一小时玩这个。如果您查看了Files.insert文档,那么它在任何地方都无法说明您应该能够在插入时设置权限。
如果您测试尝试,则在底部。正如您在Request body
下所做的那样设置权限。
它会上传文件。但Json返回给了我们一个线索。
"shared": false,
现在,如果我检查Google云端硬盘中的文件
这让我相信Google Drive API不支持此功能。上传时设置权限不。在上载文件后,您将不得不创建单独的调用来设置权限。
虽然看起来身体确实支持权限,但它似乎并没有起作用。我不确定这是一个错误还是一些不受支持的东西。我将看看我是否可以找到Drive问题跟踪器的位置并将其添加为问题。
与此同时,您将不得不进行两次通话并吃掉一些配额。
Issue 3717: Google drive api, upload file with shared permission
答案 1 :(得分:1)
也遇到过这个错误。在同一文件/目录上载中指定权限,必须在单独的请求中执行,如下所示。 Google Drive API文档不清楚这一点(并且不清楚如何在使用服务帐户时处理文件权限。)
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();