我有大量的资源日历,我的用户需要具有不同的访问权限,具体取决于他们的角色。我正在编写一个管理这些Acl规则的应用程序,但是也希望管理哪些日历出现在最终用户日历源中(即我不想让它们突然看到所有130个资源日历并且必须通过它们进行过滤)
我需要使用CalendarList api访问,但是当我传递用户// calendarList而不是使用Super Admin凭据授权的users / me / calendarList时,该服务返回404响应。
我的目标是遍历我的共享日历资源列表,并且对于每个读者或freeBusyReader的用户,将他们的calendarListEntry.hidden设置为true。
所以,我发现了答案。要模拟用户,您必须在初始化服务帐户凭据时将“用户”设置为您要模拟的电子邮件地址:
public static ServiceAccountCredential Credential(string[] Scopes, string impersonateEmail = null)
{
ServiceAccountCredential cred = ServiceAccountCredential.FromServiceAccountData(credential_stream);
var initializer = new ServiceAccountCredential.Initializer(cred.Id)
{
User = string.IsNullOrEmpty(impersonateEmail)?service_acct:impersonateEmail,
Key = cred.Key,
Scopes = Scopes
};
return new ServiceAccountCredential(initializer);
}