Office365 订阅验证请求失败。响应必须与validationToken查询参数完全匹配

Office365 订阅验证请求失败。响应必须与validationToken查询参数完全匹配,office365,microsoft-graph-api,webhooks,microsoft-graph-sdks,Office365,Microsoft Graph Api,Webhooks,Microsoft Graph Sdks,Microsoft webhook订阅正在发送奇怪的正文数据,并且validationToken参数中没有文本。Microsoft Graph团队中是否有人可以提供帮助 这就是我要发送的内容(为了隐私,我在通知URL中更改了实际域名) 这是在向“”或“”发送带有上述信息的帖子后,在正文中返回的内容 Request data { "bold": "\u001b[1m\u001b[22m", "underline": "\u001b[4m\u001b[24m", "strik

Microsoft webhook订阅正在发送奇怪的正文数据,并且
validationToken
参数中没有文本。Microsoft Graph团队中是否有人可以提供帮助

这就是我要发送的内容(为了隐私,我在
通知URL
中更改了实际域名)

这是在向“”或“”发送带有上述信息的帖子后,在正文中返回的内容

Request data
{
    "bold": "\u001b[1m\u001b[22m",
    "underline": "\u001b[4m\u001b[24m",
    "strikethrough": "\u001b[9m\u001b[29m",
    "italic": "\u001b[3m\u001b[23m",
    "inverse": "\u001b[7m\u001b[27m",
    "grey": "\u001b[90m\u001b[39m",
    "black": "\u001b[30m\u001b[39m",
    "yellow": "\u001b[33m\u001b[39m",
    "red": "\u001b[31m\u001b[39m",
    "green": "\u001b[32m\u001b[39m",
    "blue": "\u001b[34m\u001b[39m",
    "white": "\u001b[37m\u001b[39m",
    "cyan": "\u001b[36m\u001b[39m",
    "magenta": "\u001b[35m\u001b[39m",
    "greyBG": "\u001b[49;5;8m\u001b[49m",
    "blackBG": "\u001b[40m\u001b[49m",
    "yellowBG": "\u001b[43m\u001b[49m",
    "redBG": "\u001b[41m\u001b[49m",
    "greenBG": "\u001b[42m\u001b[49m",
    "blueBG": "\u001b[44m\u001b[49m",
    "whiteBG": "\u001b[47m\u001b[49m",
    "cyanBG": "\u001b[46m\u001b[49m",
    "magentaBG": "\u001b[45m\u001b[49m",
    "rainbow": "",
    "zebra": "",
    "stripColors": "",
    "zalgo": ""
}
以下是全部错误:

{ 
"error": { 
    "code": "InvalidRequest", 
    "message": "Subscription validation request failed. Response must exactly match validationToken query parameter.",
    "innerError": { 
        "request-id": "08008b1b-4eda-4a09-a0d5-45ffcce1a8d6", 
        "date": "2018-08-26T02:43:08" 
    }
}
}

Microsoft Graph在创建订阅之前验证订阅请求的notificationUrl属性中提供的通知端点。请参阅以下链接:

您可以按如下方式验证通知url:

if (Request.QueryString["validationToken"] != null)
            {
                var token = Request.QueryString["validationToken"];
                return Content(token, "text/plain");
            }

Microsoft Graph在创建订阅之前验证订阅请求的notificationUrl属性中提供的通知端点。请参阅以下链接:

您可以按如下方式验证通知url:

if (Request.QueryString["validationToken"] != null)
            {
                var token = Request.QueryString["validationToken"];
                return Content(token, "text/plain");
            }

验证令牌位于查询字符串上,不在请求正文中。验证令牌位于查询字符串上,不在请求正文中。

您的通知端点似乎没有使用查询字符串中的验证令牌进行响应。响应应该是纯文本形式的验证令牌


不确定这是否是故意的,但您发送的请求的通知url与您在本文中提到的通知url不匹配。

您的通知端点似乎没有使用查询字符串中的验证令牌进行响应。响应应该是纯文本形式的验证令牌


不确定这是否是故意的,但您发送的请求的通知url与您在本文中提到的通知url不匹配。

Microsoft Graph API询问了有关
通知url的问题。这里是调用订阅API时的JSON

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

{
           "changeType": "created,updated,deleted",
           "notificationUrl": "https://your_domain/outlook/ms_ping",
           "resource": "me/messages",
           "expirationDateTime":"2020-07-08T18:23:45.9356913Z",
           "clientState": "secretClientValue",
           "latestSupportedTlsVersion": "v1_2"
 }
调用Microsoft订阅API后,API将在
通知URL
中向您发送
验证令牌。您只需从
notificationUrl
回复此
validationToken
,回复代码为200,您在API中的帖子正文中发送了该代码。这是代码

//https://your_domain/outlook/ms_ping.php
    <?php
        $token = $_REQUEST['validationToken'];
        header("content-type:application/json");
        http_response_code(200);
        echo ($token);
    ?>
//https://your_domain/outlook/ms_ping.php

Microsoft Graph API询问了
通知URL
。这里是调用订阅API时的JSON

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

{
           "changeType": "created,updated,deleted",
           "notificationUrl": "https://your_domain/outlook/ms_ping",
           "resource": "me/messages",
           "expirationDateTime":"2020-07-08T18:23:45.9356913Z",
           "clientState": "secretClientValue",
           "latestSupportedTlsVersion": "v1_2"
 }
调用Microsoft订阅API后,API将在
通知URL
中向您发送
验证令牌。您只需从
notificationUrl
回复此
validationToken
,回复代码为200,您在API中的帖子正文中发送了该代码。这是代码

//https://your_domain/outlook/ms_ping.php
    <?php
        $token = $_REQUEST['validationToken'];
        header("content-type:application/json");
        http_response_code(200);
        echo ($token);
    ?>
//https://your_domain/outlook/ms_ping.php

Hi InfoÁsith,我理解webhook的工作原理,但Microsoft似乎没有向我的通知URL发送正确的数据。希望Graph团队中有人可以根据我发布的请求id(08008b1b-4eda-4a09-a0d5-45FFCCEA8D6)进行检查。我认为这可能是由于Microsoft在向
通知URL发送数据时使用的
内容类型。有人能验证这是以
application/json
还是
text/plain
的形式发送的吗?我知道我们应该以
text/plain
的形式发回,并以
applicationon/json
的形式发布给Microsoft,但没有提到Microsoft是如何向我们发布的。正如kfawcett发布的评论,Microsoft没有将正确的数据发送到通知URL。我发现[文档)上面写着“如果请求无效,Microsoft Graph将发送一个包含代码和详细信息的错误响应”。您能显示错误响应吗?以Hi InfoÁsith格式发布,我理解webhook的工作原理,但Microsoft似乎没有向我的通知URL发送正确的数据。希望图形上有人团队可以根据我发布的请求id(08008b1b-4eda-4a09-a0d5-45ffcce1a8d6)进行检查。我认为这可能是由于Microsoft在向
通知URL
发送数据时使用的
内容类型造成的。有人能验证这是以
应用程序/json
还是
文本/plain
的形式发送的吗?我知道我们应该以
文本/plain
的形式发回,并以
应用程序的形式发送给Microsoftaiton/json
,但是没有提到微软是如何向我们发布的。正如kfawcett发布的评论,微软没有将正确的数据发送到通知URL。我发现[文档]上面写着“如果请求无效,Microsoft Graph将发送一个包含代码和详细信息的错误响应”。您能显示错误响应吗?以该格式发布