权限与有效权利

Permissions vs. EffectiveRights

我正在使用 calendar.Permissions 来查明登录人对另一个人拥有哪些权利。

var myEmail = GetPrimaryMailForIdentity(User.Identity);
...
service.Credentials = new WebCredentials(serviceAccountName, serviceAccountPass);
service.AutodiscoverUrl(toEmail);
...
var calendar = CalendarFolder.Bind(service,WellKnownFolderName.Calendar)
foreach (var permission in calendar.Permissions) {
    if(permission.UserId.PrimarySmtpAddress == myEmail) {
        if(permission.ReadItems == FolderPermissionReadAccess.TimeOnly) permission = "TimeOnly";
        ...
    }
}

这只给了我一个人在另一个邮箱上可以拥有的各种权利中的一部分,因为也可能有 FullAccess 规则,或者邮箱可能是他 owns/manages 的资源。所以我也可以模拟用户获取权限,查看有效权限:

var myEmail = GetPrimaryMailForIdentity(User.Identity);
...
service.Credentials = new WebCredentials(serviceAccountName, serviceAccountPass);
service.AutodiscoverUrl(toEmail);
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, myEmail);
...
var calendar = CalendarFolder.Bind(service,WellKnownFolderName.Calendar)
var permissions = calendar.EffectiveRights;
if(permissions.HasFlag(EffectiveRights.Read) {
    permission = "TimeOnly"; // TODO
}

但是我怎样才能知道他被允许阅读的内容 - 所有细节,还是只有时间?

FolderPermissionReadAccess enumeration 似乎是您要查找的内容。 EffectiveRights 不会公开该级别的信息。