Код состояния 422 при попытке прикрепить файл к событию календаря Outlook - PullRequest
4 голосов
/ 15 мая 2019

Я пытаюсь прикрепить текстовый файл к существующему событию в Outlook, используя graph-js-sdk-web.js Я думаю, что я точно следовал инструкциям , но я получил 422 ответ.Как мне получить его, чтобы прикрепить файл?

Я почти уверен, что мой eventID правильный, потому что я могу создать событие и получить его по этому идентификатору.Я почти уверен, что пост-загрузка моего файла правильная, потому что я сам вложил файл, а затем получил это событие по его идентификатору, расширяющемуся для вложений, и это был идентичный тип 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, это что-то не так с самим графиком api, либо настройка отличается от их документации, либо нам не хватает некоторыхнедокументированное требование к установке.

1 Ответ

0 голосов
/ 21 мая 2019

Благодаря помощи Джейсонджона проблема решена. В ссылочных инструкциях есть несоответствие в примере полезной нагрузки и образце кода JavaScript. Я пошел с образцом js и имел привязку родительского узла в полезной нагрузке. Оказывается, нет родительского узла. Правильный способ использования этого API -

client
    .api('/me/calendar/events/' + eventID + '/attachments')
    .post({
       "@odata.type": "#microsoft.graph.fileAttachment",
       name: "helloworld.txt",
       contentBytes: "SGVsbG8gd29ybGQh"
    }, (error, response) => {
        if (error)
            console.log(error);
        else {
            console.log(response);
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...