我正在尝试使用graph-js-sdk-web.js
我相信我完全按照说明将文本文件附加到 Outlook 中的现有事件,但我得到了422
响应。我如何让它附加文件?
我很确定我eventID
是正确的,因为我可以创建一个事件并通过该 ID 获取它。我很确定我的文件的后加载是正确的,因为我自己附加了文件,然后通过其 id 扩展附件获得了该事件,它是相同的 OData 类型、名称和内容。
到目前为止,我在谷歌上搜索了响应,我所看到的一切要么只适用于人们,要么与该示例相比,他们的代码已关闭。
这是我请求的权限
openid profile User.Read MailboxSettings.Read Calendars.ReadWrite
这与授予注册应用程序的权限相匹配。
这是客户端和文件附件代码:
// Create a Graph client
var client = MicrosoftGraph.Client.init({
authProvider: (done) => {
// Just return the token
done(null, sessionStorage.accessToken);
}
});
client
.api('/me/calendar/events/' + eventID + '/attachments')
.post({
attachment: {
"@odata.type": "#microsoft.graph.fileAttachment",
name: "helloworld.txt",
contentBytes: "SGVsbG8gd29ybGQh"
}
}, (error, response) => {
if (error)
console.log(error);
else {
console.log(response);
}
});
产生了这个请求有效载荷
{
"attachment":{
"@odata.type":"#microsoft.graph.fileAttachment",
"name":"helloworld.txt",
"contentBytes":"SGVsbG8gd29ybGQh"
}
}
我得到的回应是
{
"error": {
"code": "UnprocessableType",
"message": "Cannot process input of abstract type 'Microsoft.OutlookServices.Attachment'",
"innerError": {
"request-id": "0a81e9f9-ef64-4b5e-b854-65e24fb71cfb",
"date": "2019-05-14T23:57:29"
}
}
}
我没有看到处理附件需要什么。我觉得奇怪的是它的抽象基类,而不是我在该odata.type
领域提供的那个,它可能什么都不是。
我打开了图形资源管理器,即使他们没有用于附加到事件的工作示例,我也使用了带有此有效负载和我的 url 的帖子并得到了完全相同的响应 422。这告诉我它不是 js 库,它与graph api 本身,要么设置与他们的文档不同,要么我们缺少一些未记录的设置要求。