在没有OAuth2步骤的情况下获取已发布的Office 365日历JSON?

时间:2014-12-12 18:14:58

标签: rest oauth calendar office365

修改

最初,问题是如何在没有身份验证的情况下使用JSON获取Office365日历;但是,我的意思是如何在不需要OAuth2步骤的情况下获取JSON中的Office365日历(例如,在服务器端,可以接受其他身份验证方法来检索日历数据)。

问题:

我想使用Office 365 REST API访问此已发布的日历(即自发布日历以来“读取”操作),以便我可以按照自己喜欢的方式“设置”日历。所以,我正在寻找一种公共API方法来使用我的一个日历。我发现的Office 365 REST API的代码示例使用OAuth来验证客户端。这看起来有点矫枉过正。

我已经提出了一些可能的解决方案,因此欢迎任何有关最佳方法的建议。

背景

我在Office365中有一个已发布的日历,它为我提供了一个Feed:

http://outlook.office365.com/owa/calendar/USER@DOMAIN/CALENDAR_NAME/calendar.ics

和网址:

http://outlook.office365.com/owa/calendar/USER@DOMAIN/CALENDAR_NAME/calendar.html

我怎样才能做“calendar.html”正在做的事情,这样我就可以按照我希望的方式显示日历(而不是使用Office 365提供的IFra)?

示例:

以下是使用REST API的示例网址:

https://outlook.office365.com/api/v1.0/users/USER@DOMAIN/calendars

浏览器将显示一个基本的身份验证对话框,因此看起来OAuth不是唯一需要的方法(一种可能的解决方案,请求可以从使用基本身份验证调用REST API的本地服务器代理)。 / p>

的问题:

  • 一个问题可能是日历“发布”功能是针对有限数量的数据(例如,最多1年或将来最多),这是我假设的iCalendar(*。 ics)文件将包含任何请求。

  • 使用带有身份验证的REST API假设没有日期范围限制(因为可以使用REST API查询日历,我假设您可以追溯到一年以后)。

可能的解决方案:

  • 通过使用基本身份验证进行REST API调用来代理来自其他服务器的请求。可能还需要缓存,因为它看起来响应时间可能很慢。日历可以是使用本地端点的JavaScript,也可以是服务器上生成的HTML内容。

  • 看起来Office365 AuthenticationContext.AcquireTokenAsync()会接受 ClientCredential (客户端ID和密码)或 UserCredential (简单的用户名和密码)。因此,我认为我可以通过手动将凭据传递给获取令牌的函数来运行使用Office365库的本地代理服务。 (我仍然需要对此进行测试以确保该功能确实以这种方式工作。)

  • 只需iFrame Office 365提供的“calendar.html”页面。(防止跨域,除非它位于Microsoft托管解决方案之一“Something Webs”。)

  • 如果使用iCalendar(* .ics)Feed,则需要iCalendar格式的转换函数为JSON(https://github.com/kewisch/ical.js),然后可以使用JavaScript或日历库设计一个自定义日历。(这对于查看一年的日历活动而不是兑现和提供查询机制不是很方便,除了显示一个月前后。所以,某种ics2json到在FullCalendar上使用可能仅适用于几个月的日历历史记录。)

欢迎任何关于最佳方法的建议(或此处未列出的其他方法)。

1 个答案:

答案 0 :(得分:1)

Office 365 API需要Oauth2才能运行。如果您使用Visual Studio开发应用程序,Visual Studio + OWIN中间件的O365工具将为您处理大量的oauth工作。

如果oauth绝对不是一个选项,我会考虑使用EWS API,它可以使用基本身份验证(有关MSDN上here的更多信息)。