谷歌驱动器api,上传文件具有共享权限

时间:2015-01-28 13:29:59

标签: c# google-api google-drive-api google-api-dotnet-client

我正在尝试将文件上传到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();

2 个答案:

答案 0 :(得分:2)

好的,我花了最后一小时玩这个。如果您查看了Files.insert文档,那么它在任何地方都无法说明您应该能够在插入时设置权限。

如果您测试尝试,则在底部。正如您在Request body下所做的那样设置权限。

enter image description here

它会上传文件。但Json返回给了我们一个线索。

"shared": false,

现在,如果我检查Google云端硬盘中的文件

enter image description here

这让我相信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();