Во-первых, полученный вами токен проверки должен рассматриваться как непрозрачное значение и возвращаться без изменений , а ошибка Subscription validation request failed. Response must exactly match validationToken query parameter
пытается сообщить вам, что что-то изменилось.
Поскольку токен проверки приходит к вам в качестве параметра запроса URL, убедитесь, что вы работаете с правильно декодированным значением в коде, прежде чем возвращать его .
Вот соответствующая документация из Документов Microsoft: Проверка конечной точки уведомления
POST https://{notificationUrl}?validationToken={opaqueTokenCreatedByMicrosoftGraph}
Другие требования (из той же ссылки):
- ответ в течение 10 секунд
- 200 (ОК) код состояния.
- тип содержимого должен быть text / plain.
- тело должно включать токен проверки.
Примеры кода
Пример ASP.NET MVC - специально посмотрите на файл NotificationController.cs
[HttpPost]
public async Task<ActionResult> Listen()
{
// Validate the new subscription by sending the token back to Microsoft Graph.
// This response is required for each subscription.
if (Request.QueryString["validationToken"] != null)
{
var token = Request.QueryString["validationToken"];
return Content(token, "plain/text");
}
Пример кода Node.js - Специально посмотрите на listen.js
/* Default listen route */
listenRouter.post('/', (req, res, next) => {
let status;
let clientStatesValid;
// If there's a validationToken parameter in the query string,
// then this is the request that Office 365 sends to check
// that this is a valid endpoint.
// Just send the validationToken back.
if (req.query && req.query.validationToken) {
res.send(req.query.validationToken);
// Send a status of 'Ok'
status = 200;
}