我正在尝试使用RESTapi在Office 365帐户中获取个人日历和共享日历。由于目前Oauth2不支持访问共享日历,因此我使用基本授权测试我的代码。
我的帐户中有三个日历:
使用以下终点我能够使用基本授权获取事件:
https://outlook.office365.com/ews/odata/Users(' user1@domain.com')/活动
奇怪的是,过去两天我无法使用相同的终点获取user1@domain.com和user2@domain.com的活动。我尝试访问事件时收到以下错误:
{" @ odata.context":" https://outlook.office365.com/ews/odata/ $元数据#用户(' user1@domain.com')/活动",& #34;值":[{"错误" {"代码":" ErrorInternalServerError""消息":&#34 ;对象引用未设置为对象的实例。"}}
但我仍然可以使用相同的端点和基本身份验证访问user3@domain.com的事件。
我还尝试使用oauth2访问自己的日历。我得到类似的错误
{"值":[{"错误" {"代码":" ErrorInternalServerError""消息&#34 ;:"对象引用未设置为对象的实例。"}}
但我可以成功地与日历端点
交谈我想知道之前是否有人见过这个错误。非常感谢任何帮助/建议。
答案 0 :(得分:2)
建议不要使用基本身份验证,并且不支持生产使用。 Basic现在是为了简化API的探索,但将来会在某个时候停用。
话虽如此,您说当您使用OAuth2访问自己的日历时出现错误,是吗?这听起来像是一个间歇性的问题,但是没有足够的信息来确切知道发生了什么。如果您仍然看到它,那么add instrumentation headers对您的请求(User-Agent
,client-request-id
,return-client-request-id
)最好并获得请求响应的网络跟踪。
答案 1 :(得分:1)
In addition to Jason's comments, please use our production endpoint https://outlook.office.com/api/v1.0 instead of our old preview endpoint https://outlook.office365.com/ews/odata/ See this blog post for more details.
答案 2 :(得分:0)
这也让我很困惑。网络上的所有内容都会指向您使用Office 365 API,但请相信我,这不是您想要做的。您将需要使用Exchange API。 Office 365只是一个Exchange服务器,因此您可以像自动化任何Exchange服务器一样自动执行它。这里有示例代码。这很简单。
Consume Office 365 REST API Without UI
Office 365 API只是一组基于UI的应用程序的工具,允许用户输入其Office 365凭据并允许该应用程序代表他们工作。