Google Drive SDK - 更改项目共享权限

时间:2013-09-20 13:17:57

标签: google-drive-api

根据Google Drive SDK Update sharing permissionshttps://developers.google.com/drive/v2/reference/permissions我要更改整个文件夹内容以供查看(该文件夹仅包含图片,我会在<img alt='' src='https://drive.google.com/uc?export=view&id="fileID"'/>的页面上显示这些内容

所以,我正在尝试使用该代码

PermissionList permissions = Google_DriveService.Permissions.List(fileId).Fetch();
var filePermissions =  permissions.Items;


Permission permission = Google_DriveService.Permissions.Get(fileId, filePermissions[0].Id).Fetch();
permission.Role = "reader";
permission.Value = "me";
permission.Type =  "anyone";
permission.WithLink = true;

var updated = Google_DriveService.Permissions.Update(permission, fileId, filePermissions[0].Id).Fetch();

但我收到错误消息

Google.Apis.Requests.RequestError Invalid permission type specified [400] Errors [ Message[Invalid permission type specified] Location[ - ] Reason[invalid] Domain[global] ] 

我做错了什么?

3 个答案:

答案 0 :(得分:3)

托尼的回答是正确的,如果其他人想要测试这个,这里是他的指示的附加内容。请注意,由于时间限制,我没有为此编写代码,但我使用Google云端硬盘网页API页面上提供的Google API对其进行了测试。我通过以下方式对此进行了测试:

  1. 转到以下链接并列出驱动器中的所有文件。 https://developers.google.com/drive/v2/reference/files/list

  2. 选择一个您要共享的文件以进行只读访问,并根据以下屏幕截图复制出“id”:

  3. drive id

    转到此处的插入权限页面 - 托尼是正确的,您不删除现有权限,而是添加到该权限:https://developers.google.com/drive/v2/reference/permissions/insert

    1. 在API资源管理器中,键入“role”作为“reader”,键入“type”作为“any”。

    2. 转到您的云端硬盘:https://drive.google.com/drive/#my-drive,您会看到该文件现已共享 - 如果您将鼠标悬停在下方屏幕截图中的绿色链接图标上,它会告诉您现在已共享该文件。

    3. Drive shared

      您还可以复制文档的链接并将其粘贴到Chrome中的隐身模式,以测试您是否可以在隐身模式下访问该文档的只读版本,并且它应该有效。

      其他

      代码不应该太难,这里是:

       Permission newPermission = new Permission();
      
          newPermission.setType("anyone");
          newPermission.setRole("reader");
          try {
            return service.permissions().insert(fileId, newPermission).execute();
          } catch (IOException e) {
            System.out.println("An error occurred: " + e);
          }
      

答案 1 :(得分:2)

您无法使用更新请求更改权限类型,插入新权限并删除现有权限。您也不应将me用作与任何人权限相关的委托人。任何权限都不希望设置值属性。

答案 2 :(得分:0)