通过Google Drive API将文件共享级别设置为“任何人都有链接”。

7
如何做到呢?我应该使用Google文档的ACL吗?如何配置这样的ACL?
4个回答

20

你需要设置以下参数:

private Permission insertPermission(Drive service, String fileId) throws Exception{
   Permission newPermission = new Permission();
   newPermission.setType("anyone");
   newPermission.setRole("reader");
   newPermission.setValue("");
   newPermission.setWithLink(true);
   return service.permissions().insert(fileId, newPermission).execute();
}

然后,您可以从“webContentLink”字段中获取共享链接。 - agirardello
我在这里编写了一份逐步指南:http://stackoverflow.com/questions/18917828/google-drive-sdk-change-item-sharing-permissions/27990794#27990794 - Simon

4
使用此方法可使您的文件对任何人可见:
private static Permission insertPermission(Drive service, String fileId) throws IOException
{
    Permission newPermission = new Permission();
    newPermission.setType("anyone");
    newPermission.setRole("reader");

    return service.permissions().insert(fileId, newPermission).execute();
}

更多详细信息在此处


1
这使得它公开可用,并允许任何人找到它。"有链接的任何人"并不能让人们找到它。这是一个很大的区别。 - Johann
实际上,我刚刚尝试了一下。当我使用Android上的Drive应用程序查看该文件时,它显示“在Web上公开(带有链接)任何拥有链接的人”。这似乎是用户想要的。 - charles young
为了完整起见,如果您使用“任何人”和“读者”,则可以使用Google.Apis.Drive.v2.Data.File.WebContentLink(从service.Files.Insert操作中提供)作为链接,以允许任何人下载文件。 - charles young

1

0

对于Google Drive API V3,使用此方法使您的文件对任何人可见:

    private Permission InsertAnyonePermissionToDownload(Google.Apis.Drive.v3.DriveService service, String fileId)
    {
        Permission newPermission = new Permission();
        newPermission.Type = "anyone";
        newPermission.Role = "reader";
        return service.Permissions.Create(newPermission, fileId).Execute();
    }

1
欢迎来到SO,Fabricio H. da Rocha!这里不鼓励仅提供代码的答案,因为它们无法解释问题是如何被解决的。请更新您的解决方案,并解释您的代码如何解决手头的问题 :) - Joel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接