我在更新 Google 文档的 Acl 时遇到问题。我想与一些用户共享文档,但只允许 COMMENTER 权限。这是代码:AclEntry newAclEntry = getDservice().insert(new URL(aclFeedUrl), new AclScope(AclScope.Type.USER, "user1@domain.com"), AclRole.COMMENTER);
现在 Eclipse 告诉我 AclRole.COMMENTER 是一个有效类型,但是当我运行代码时,我得到以下异常:服务异常:发布的条目对字段具有无效值:角色
如果我将其更改为 AclRole.READER 它工作正常。
所以我想我会做一些调查。您可以通过“共享”从 Google Doc 设置 COMMENTER 访问权限。所以我这样做了,然后通过以下方式阅读了文档的 ACL:
AclFeed feed = getDservice().getFeed(new URL(doc.getAclFeedLink().getHref()),AclFeed.class);
if (feed == null)
System.out.println("Feed is null");
else {
for (AclEntry a: feed.getEntries()) {
System.out.println("acl role:" + a.getRole().getValue());
System.out.println("acl scope:" + a.getScope().getValue());
}
}
具有 COMMENTER 访问权限的 user1 和具有 READER 访问权限的 user2 的输出是:
acl 角色:读者 acl 范围:user1@domain.com
acl 角色:读者 acl 范围:user2@domain.com
因此,即使 user1 明确是 COMMENTER,它也会被报告为“读者”
如果我访问 AclRole 的在线文档,则没有 COMMENTER 枚举 (https://developers.google.com/gdata/javadoc/com/google/gdata/data/acl/AclRole)。
那么,如何为仅评论权限设置 ACL?显然,Google Docs 支持它,并且 Eclipse 正在从我正在使用的 GData jar 中获取它。
我错过了什么?