【发布时间】:2014-11-07 09:04:34
【问题描述】:
我正在构建一个 WPF 应用程序,该应用程序对组织中的多个用户日历进行汇总。该公司正在使用 Office 365,所以我认为 Office 365 API 将是最好的选择。
我设法访问了我自己的日历,但我不知道如何访问我同事的日历。 可能吗? 我还需要列出 GAL,以便选择我希望将哪些用户包含在摘要中。
【问题讨论】:
我正在构建一个 WPF 应用程序,该应用程序对组织中的多个用户日历进行汇总。该公司正在使用 Office 365,所以我认为 Office 365 API 将是最好的选择。
我设法访问了我自己的日历,但我不知道如何访问我同事的日历。 可能吗? 我还需要列出 GAL,以便选择我希望将哪些用户包含在摘要中。
【问题讨论】:
[UPDATE] 服务帐户支持现在可用于 REST API。请参阅Building Daemon or Service Apps with Office 365 Mail, Calendar, and Contacts APIs (OAuth2 client credential flow) 了解更多信息。
感谢您提出问题并对 Office 365 API 感兴趣!目前,您可以使用 Office 365 API 访问经过身份验证的用户的日历,但不能访问其他用户的日历。授权服务帐户访问组织内或整个组织内多个用户的邮件/日历/联系人是我们的路线图,并且优先级很高,敬请期待。
同时,您可以使用 Exchange Web 服务 (EWS) 托管 API 来实施您的应用程序。但是,通过 EWS 应用模拟,服务帐户可以读取/写入用户的整个邮箱,而不仅仅是日历。一旦我们在 Office 365 API 中添加对服务帐户的支持,您将能够使用 OAuth 并将应用的访问范围缩小到仅读取用户的日历。
这里有几个链接解释了 EWS 应用模拟的工作原理。
如果您有任何问题或需要更多信息,请告诉我。
谢谢,
文卡特
【讨论】:
是的,可以使用基本身份验证(但不能使用 OAuth2)。此外,您的帐户必须对同事的日历具有读取权限(管理员可以通过设置邮箱文件夹权限来完成)。
var authClearText = string.Format("{0}:{1}", yourEmail, yourPassword);
var authEncoded = Convert.ToBase64String(Encoding.Default.GetBytes(authClearText));
var authHeaderValue = "Basic " + authEncoded;
using (var httpClient = new HttpClient())
{
httpClient.DefaultRequestHeaders.Add("Authorization", authHeaderValue);
...
}
【讨论】: