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

Rest 在没有OAuth2步骤的情况下获取发布的Office 365日历JSON?,rest,oauth,calendar,office365,Rest,Oauth,Calendar,Office365,编辑: 最初,问题是如何在没有身份验证的情况下获得JSON格式的Office365日历;但是,我的意思是如何在不需要OAuth2步骤的情况下获得JSON格式的Office365日历(例如,在服务器端,可以使用其他身份验证方法来检索日历数据) 问题: 我想使用Office 365 REST API访问此已发布的日历(即,仅在日历发布后才执行“读取”操作),以便我可以按照自己喜欢的方式“设置”日历的样式。因此,我正在寻找一种使用我的日历的公共API方法。我发现的Office 365 REST API

编辑:

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

问题:

我想使用Office 365 REST API访问此已发布的日历(即,仅在日历发布后才执行“读取”操作),以便我可以按照自己喜欢的方式“设置”日历的样式。因此,我正在寻找一种使用我的日历的公共API方法。我发现的Office 365 REST API的代码示例使用OAuth对客户端进行身份验证。这似乎太过分了

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

背景:

我在Office365中发布了一个日历,它为我提供了一个提要:

以及网址:

我该如何做“calendar.html”正在做的事情,以便以我希望的方式显示日历(而不是使用Office365提供的工具)

示例:

以下是使用REST API的URL示例:

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

问题:

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

  • 通过身份验证使用RESTAPI假定没有日期范围限制(因为可以使用RESTAPI查询日历,所以我假定您可以查询一年以上的日历)

可能的解决方案:

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

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

  • 只需使用Office365提供的“calendar.html”页面。(禁止跨域,除非它位于Microsoft托管的解决方案“某物网站”上。)

  • 如果使用iCalendar(*.ics)提要,则需要将iCalendar格式转换为JSON(),然后可以使用JavaScript或日历库来设计自定义日历。(如果不兑现并提供查询机制,查看一年的日历事件就不是很方便,除非显示一个月的前后。因此,在FullCalendar上使用某种ics2json可能只适用于几个月的日历历史。)


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

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


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

我还不能让AcquireTokenAsync使用UsService凭据。因此,目前看来,使用基本身份验证进行手动REST API调用似乎更可行。您是否找到了解决方法?我也在同一条船上。正在查看日历样式,但事件更新需要自动化。该应用程序不会被用户直接访问(它将显示在数字标牌上),因此我实在负担不起访问数据的整个OAuth过程。已经有一段时间了,但我不得不代理请求,然后我不确定我使用了什么身份验证方法,但我确实使用了Office 365库,并创建了一个包装器类来获得我需要使用的东西。谢谢我最终使用了他们的带有包装器的SOAP api。@KFE您是如何实现这一点的?我也在同一条船上。你能详细说明一下吗?OAuth绝对是一个选择。事实上,我对使用库比对手工解析HTTP响应更感兴趣。这很好,谢谢。您能否提供一些关于如何为第一个选项中所述的场景设置OWIN的更多信息?此外,如果允许基本身份验证,我也很喜欢使用EWS API的想法。在阅读他们的文档时,他们提到需要开发人员站点订阅(我认为这已被纳入到Business Premium中,我没有),所以我认为这对于基本身份验证来说是不必要的。代码示例非常复杂。你知道我在哪里可以找到基本身份验证+查询(如日历事件)的示例吗?FWIW我强烈建议不要对任何事情使用基本身份验证,因为即使是最基本的中间人攻击也会让你的信誉大打折扣。如果可能的话,我还强烈建议您使用O365 API而不是EWS,因为它不会像EWS API那样限制您只访问Exchange数据。OWIN中间件框架是一个简单的nuget包