Google文档 - 阻止与我们域外的Google帐户自动共享

时间:2016-06-24 20:16:09

标签: google-sheets google-drive-api google-authentication

注意:不限制域名。

如果我与个人电子邮件共享文档,则会向他们发送包含访问令牌的链接。他们可以使用此链接和此链接来访问受限制的电子表格。

但是,如果他们登录他们的个人Gmail帐户然后返回该链接,该文档将自动共享到他们的个人Gmail帐户。他们以及有权访问该Gmail帐户的任何其他人现在都可以访问电子表格,而无需导航到特定链接。

如何阻止此次自动分享?

2 个答案:

答案 0 :(得分:1)

这很可能是一个简单的答案,但我希望它有所帮助。

可以通过控制枚举访问(https://developers.google.com/apps-script/reference/drive/access)和枚举权限(https://developers.google.com/apps-script/reference/drive/permission)来解决问题

我建议使用类似的东西:

var file = DriveApp.createFolder('NameOfFile');
file.setSharing(DriveApp.Access.DOMAIN, DriveApp.Permission.VIEW);

通过这种方式,获取该文件访问权限的人只能通过他们的域电子邮件地址访问它,而不能访问他们的个人电子邮件地址。此外,域中的任何人都可以查找和查看它。这两个链接应该为您提供更多信息。

答案 1 :(得分:0)

您需要设置permission,如果脚本使用可以访问私有数据的服务,您将看到授权对话框。如果代码更改添加了新服务,您之前授权的脚本也会要求额外的authorization。所有对Google Drive API的请求必须由经过身份验证的用户授权。

HTTP请求

POST https://www.googleapis.com/drive/v2/files/fileId/permissions

在请求正文中,您可以设置所需的属性,例如roletype,其中允许的值为user, group, domain and anyone

private static Permission insertPermission(Drive service, String fileId,
String value, String type, String role) {
Permission newPermission = new Permission();

newPermission.setValue(value);
newPermission.setType(type);
newPermission.setRole(role);
try {
return service.permissions().insert(fileId, newPermission).execute();
} catch (IOException e) {
System.out.println("An error occurred: " + e);
}
return null;
}

您也可以尝试查看此document,其中讨论了如何设置共享权限。