0

Попытка создать подписку для получения канала для msgraph уведомлений одного диска для создания/выгрузки файлов. Я ударять URL -Получение 400 ошибок с ошибкой для MSGraph для создания подписки api [Код ошибки - ExtensionError]

https://graph.microsoft.com/v1.0/subscriptions 

с правильными заголовками и следующее тело -

{ 
    "changeType": "updated", 
    "notificationUrl": "https://xxxxx.xxxxxxxxx.com/zzzz/qwertqwert", 
    "resource": "https://stackoverflow.com/users/{user-id}/drive/root", 
    "expirationDateTime": "2017-02-18T19:49:40.000Z", 
    "clientState": "justsomerandomstring" 

} 

Я получаю следующий ответ: 400 Bad Request Error

{ 
    "error": { 
    "code": "ExtensionError", 
    "message": "Operation: Create; Exception: [Status Code: BadRequest; Reason: Bad Request]", 
    "innerError": { 
     "request-id": "2862896286-5415-4921-gbn5-8741288985", 
     "date": "2017-02-17T17:30:22" 
    } 
    } 
} 

Я делая тот же запрос 30-32 часа назад. Получался идентификатор подписки, а также уведомления о файлах моего сервлета перенаправления. Не удалось выяснить, что изменилось. Не удалось найти какую-либо вспомогательную документацию.

+0

Проблема исчезла. Я могу создать новый канал и подписки для ранее заблокированных учетных записей. Но я все равно хотел бы знать причину проблемы. – crucifix94

+0

Проблема вернулась. На этот раз я даже не звонил API для настройки каналов подписки в течение длительного времени. Учетные записи снова получают ту же ошибку – crucifix94

+0

Вы не одиноки. У меня такая же проблема с созданием подписки. Он работал нормально, я ничего не менял и теперь получил 400 плохих запросов через неделю. – JFlox

ответ

0

Здесь была ошибка, и мне потребовалось некоторое время, чтобы выяснить, в чем проблема, поэтому я поделился этим с вами здесь.

Вот рабочий код:

$subscription = new Subscription([ 
    'resource'  => "me/mailFolders('Inbox')/messages?filter=id eq %27" . $draftEmail->getId() . '%27', 
    'notificationUrl' => 'https://my.domain.fr', 
    'changeType'  => 'updated', 
    'expirationDateTime' => date(DATE_ISO8601, strtotime('+48 hours')) 
]); 

линия, которая была неправильно для меня:

'resource' => 'me/messages/' . $draftEmail->getParentFolderId(), 

И я заменить его

'resource' => "me/mailFolders('Inbox')/messages?filter=id eq %27" . $draftEmail->getId() . '%27', 

я нашел свой ответ на этот ссылка: https://msdn.microsoft.com/en-us/office/office365/api/notify-rest-operations#subscribe-to-changes-in-my-mail-calendar-contacts-or-tasks

Но, по-моему, параметр «ресурс» должен быть более документирован в документации по графику api, а сообщение об ошибке должно указывать ПОЧЕМУ это BadRequest.