使用服务帐户访问其他用户日历

Posted

技术标签:

【中文标题】使用服务帐户访问其他用户日历【英文标题】:Accessing other user calendar using service account 【发布时间】:2014-12-23 10:29:52 【问题描述】:

我们正在尝试使用 EWS 托管 API 集成 Office 365。我们使用 office 365 管理中心创建了一个具有模拟角色的服务帐户。 现在,我们如何使用该服务帐户来访问应用程序中其他用户的数据(如邮件、联系人、日历)? 谢谢,罗希特

【问题讨论】:

【参考方案1】:

您像往常一样创建一个 ExchangeService 实例,然后设置其 ImpersonatedUserId。

示例:

var credentials = new WebCredentials(
    "impersonateduser@your.onmicrosoft.com", "password", "");

var exchange = new ExchangeServicePreAuthenticate=true, Credentials=credentials;
exchange.ImpersonatedUserId = new ImpersonatedUserId(
    ConnectingIdType.SmtpAddress, 
    "calendaruser@your.onmicrosoft.com");

在此之后,您可以访问其他用户(在本例中为 calendaruser)的数据。

【讨论】:

谢谢。只是另一个查询,我们可以使用模拟用户 ID 和 OAuth 来生成客户端 ID、访问令牌等吗? 它给了我错误,因为日历用户的“SMTP 地址没有与之关联的邮箱”?为什么会出现这个错误??【参考方案2】:

http://msdn.microsoft.com/en-us/library/office/dn722377(v=exchg.150).aspx 及其所有子主题都是一个不错的起点。

【讨论】:

以上是关于使用服务帐户访问其他用户日历的主要内容,如果未能解决你的问题,请参考以下文章

该帐户无权在其他用户的 Outlook 日历上保存约会时模拟请求的用户

使用身份验证服务访问 iCloud 日历

Php登录问题(用户无法登录,用户可以使用其他密码访问自己的帐户)

cakephp 避免登录用户访问其他用户的帐户

如何使用 Exchange Web 服务为其他用户查找日历项目

其他用户帐户安装的本地SQL Server,如何从新用户帐户访问