MIcrosoft API获取日历事件描述并适当显示

时间:2019-01-25 10:40:05

标签: reactjs microsoft-graph microsoft-graph-calendar

在我的React项目中,我进行了Axios调用,以填充一个日历事件列表,以从Microsoft Outlook日历中获取数据(使用Microsoft API)。结果如下 enter image description here

如您所见,只有事件描述给我带来了问题。确实,为了显示事件描述,它向我显示了一个没有事件详细信息的HTML字符串。

我读到我必须在请求Content-type:text的标头中输入内容,但是我尝试了并且它不起作用。我该如何解决?这是我的Axios请求

getEvents(startDate, endDate, accessToken) {
    const startDateString = startDate.toISOString();
    const endDateString = endDate.toISOString();
    axios.get(
      `https://graph.microsoft.com/v1.0/users/${USER_PUBLIC_ID}/calendarview?startdatetime=${startDateString}&enddatetime=${endDateString}&orderby=start/dateTime`,
      {
        headers: {
          Authorization: `Bearer ${accessToken}`,
        },
      },
    ).then(response => this.setEvents(response.data.value))
      .catch((error) => {
        console.error(error.response);
      });
  }

2 个答案:

答案 0 :(得分:1)

为此,需要指定Prefer: outlook.body-content-type="text"标头。

According to documentation

  

要指定要在 Body 中返回的所需格式,然后   GET请求中的 UniqueBody 属性,请使用Prefer: outlook.body-content-type标头:

     
      
  • 指定Prefer: outlook.body-content-type="text"以获取以文本格式返回的消息正文。
  •   
  • 指定Prefer: outlook.body-content-type="html",或仅跳过标题,以HTML格式返回邮件正文。
  •   

示例

getEvents(startDate, endDate, accessToken) {
    const startDateString = startDate.toISOString();
    const endDateString = endDate.toISOString();
    return axios.get(
      `https://graph.microsoft.com/v1.0/users/${USER_PUBLIC_ID}/calendarview?startdatetime=${startDateString}&enddatetime=${endDateString}&orderby=start/dateTime`,
      {
        headers: {
          'Authorization': `Bearer ${accessToken}`,
          'Content-Type': 'application/json',
          'Prefer' : 'outlook.body-content-type="text"'
        }
      }
    );
}

答案 1 :(得分:0)

您需要给axios一个配置对象。当前,您正在使用get属性,这就是为什么您的代码当前不起作用的原因:

axios({
url: `https://graph.microsoft.com/v1.0/users/${USER_PUBLIC_ID}/calendarview?startdatetime=${startDateString}&enddatetime=${endDateString}&orderby=start/dateTime`,
method: "GET",
        headers: {
          Authorization: `Bearer ${accessToken}`,
          "Content-type": "text"
        },
})

您可以在此处了解更多信息:https://github.com/axios/axios