【问题标题】:Office 365 API or Azure AD Graph API - Get Someone Elses CalendarOffice 365 API 或 Azure AD Graph API - 获取其他人日历
【发布时间】:2016-06-02 08:27:46
【问题描述】:
我正在尝试获取 Office 365 日历,不是为“我”,而是为联系人。即在我工作的公司(有一个全球地址列表)中,我想访问 Dave 的日历,就像在 Outlook 中一样。
我浏览过文档here、StackOverflow(例如here 和here),以及Office 365 samples 和Graph API samples(我认为全局地址列表需要Graph API),但找不到方法。
我有 3 个问题:
- 这可能吗?
- 如果是这样,请问如何?
- 如果无法使用全局地址列表,是否可以使用通过 Office 365 创建的联系人?如果可以,如何实现?
非常感谢任何帮助。
【问题讨论】:
标签:
office365
azure-active-directory
office365-apps
outlook-restapi
【解决方案1】:
如果我正确理解您的情况,目前是不可能的。如果您以您的身份登录,您只能访问您的邮箱。您无法访问其他人,即使他们已将访问权限委托给您。这是我们正在寻求改进的地方,但目前您无法做到。
您可以创建一个使用客户端凭据身份验证流程的应用,并且管理员可以向所有用户授予访问权限,但我认为这不是您想要的场景。
【解决方案2】:
首先,是的,这是可能的,但您需要使用 App-Only 令牌来访问 Exchange API 以获取此数据。请务必记住,您的 API 访问令牌决定了您访问该 API 所需的权限。假设您不是管理员,如果您获得用户令牌并尝试查询其他人的日历,您将收到“403 - 禁止访问”,因为您只有读取自己日历的权限。
另一方面,您可以请求您的应用程序拥有应用程序权限(相对于委托权限),这将使您能够在没有登录用户上下文的情况下查询 Exchange API 的高级访问权限。您可以查看有关这些权限的文档here at Table 4。
请注意,对于请求这些级别权限的任何应用程序,都需要管理员同意才能获得访问权限。来自与上述相同的页面:
注意描述服务应用权限的表格不包括
需要管理员同意列,因为服务应用程序始终具有权限
需要管理员同意。有关服务应用程序的更多信息,请参阅
Building service and daemon apps in Office 365.
请查看该引用中的链接,因为它可能会真正帮助您开始开发服务应用程序。
我希望这会有所帮助!