Неверный запрос на создание подписки с помощью @ microsoft / microsoft-graph-client - PullRequest
0 голосов
/ 23 июня 2019

Я использую учебник по JavaScript , и у меня возникает ошибка при выполнении следующего кода:

const options = {
    authProvider,
};

const client = Client.init(options);

const subscription = {
   changeType: "created,updated",
   notificationUrl: "https://4714faf8.ngrok.io/events",
   resource: "me/events",
   expirationDateTime:"2019-06-24T18:23:45.9356913Z",
   clientState: "secretClientValue"
};

let res = await client.api('/subscriptions')
    .post({subscription : subscription});

И я получаю эту ошибку:

statusCode: 400,
code: 'InvalidRequest',
message: 'expirationDateTime is a required property for subscription creation.',
requestId: 'c20f75b5-0dca-48d5-a116-a34124bbfd58',
date: 2019-06-23T19:42:56.000Z,
body: '{
    "code": "InvalidRequest",
    "message": "expirationDateTime is a required property for subscription creation.",
    "innerError": {
    "request-id": "c20f75b5-0dca-48d5-a116-a34124bbfd58",
    "date": "2019-06-23T15:42:56"
    }
}'

Есть ли у вас представление о причине?

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

Вы должны напрямую передать объект подписки в функцию post:

let res = await client.api('/subscriptions').post(subscription);

Это работает для меня.

const options = {
    authProvider,
};

const client = Client.init(options);

const subscription = {
   changeType: "created,updated",
   notificationUrl: "https://4714faf8.ngrok.io/events",
   resource: "me/events",
   expirationDateTime:"2019-06-24T18:23:45.9356913Z",
   clientState: "secretClientValue"
};

let res = await client.api('/subscriptions').post(subscription);

Затем Microsoft Graph проверяет ваш запрос и отправляет обратно токен проверки.на URL-адрес вашего уведомления:
POST https://https://4714faf8.ngrok.io/events?validationToken={opaqueTokenCreatedByMicrosoftGraph}

В течение 10 секунд необходимо отправить ответ со следующими характеристиками:

  • Код состояния 200 (ОК).
  • Тип содержимого должен быть текстовым / простым.
  • Тело должно включать токен проверки, предоставленный Microsoft Graph.

Этот процесс проверки конечной точки уведомления описан в официальной документации.: https://docs.microsoft.com/en-us/graph/webhooks#notification-endpoint-validation

0 голосов
/ 24 июня 2019

Вам не хватает ". Узел resource: "me/events, должен быть resource: "me/events",:

const subscription = {
    changeType: "created,updated",
    notificationUrl: "https://4714faf8.ngrok.io/events",
    resource: "me/events",
    expirationDateTime: "2019-06-23T18:23:45.9356913Z",
    clientState: "secretClientValue"
};

Редактировать

Ответ имеет дату / время 2019-06-23T19:42:56.000Z, но вы запрашиваете expirationDateTime из 2019-06-23T18:23:45.9356913Z. Другими словами, вы запрашиваете добавить новую подписку, срок действия которой истекает до ее создания.

Попробуйте установить день или два в будущем:

const subscription = {
   changeType: "created,updated",
   notificationUrl: "https://4714faf8.ngrok.io/events",
   resource: "me/events",
   expirationDateTime:"2019-06-27T00:00:00Z",
   clientState: "secretClientValue"
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...