【问题标题】:Microsoft Graph Rest API: how does "notification endpoint validation" works?Microsoft Graph Rest API:“通知端点验证”如何工作?
【发布时间】:2020-02-04 14:55:43
【问题描述】:

阅读文档我看到...“客户端必须在 10 秒内提供具有以下特征的响应:”

  • 200(OK)状态码。
  • 内容类型必须是文本/纯文本。
  • 正文必须包含 Microsoft Graph 提供的验证令牌。

我在客户端收到的请求是

/?validationToken=Validation%3a+Testing+client+application+reachability+for+subscription+Request-Id%3a+ef492401-75ec-4ac8-b87a-89d0b81ae977

所以我给出的回应是

$responseCode = 200;
http_response_code($responseCode);
header('Content-type: text/plain');
echo $response = $_GET['validationToken'];

翻译过来,..是:

验证:测试订阅请求 ID 的客户端应用程序可达性:ef492401-75ec-4ac8-b87a-89d0b81ae977

为什么我会收到此回复?

< HTTP/1.1 400
< {
<     "error": {
<         "code": "InvalidRequest",
<         "message": "Subscription validation request failed. Must respond with 200 OK to this request.",
<         "innerError": {
<             "request-id": "ef492401-75ec-4ac8-b87a-89d0b81ae977",
<             "date": "2020-02-04T14:50:35"
<         }
<     }
< }

【问题讨论】:

  • 看起来你的(?)系统响应了 400 - 所以去检查你的日志文件并找出原因。
  • 已解决:我发送了错误的生命周期NotificationUrl:$request["notificationUrl"] = $conf['NotificationURL']; $request["lifecycleNotificationUrl"] = $conf['NotificationURL']; // "https://webhook.azurewebsites.net/api/lifecycleNotifications";,它必须与 NotificationURL 相同

标签: php microsoft-graph-api office365api outlook-restapi


【解决方案1】:

问题出在这里:

$request["notificationUrl"] = $conf['NotificationURL'];
$request["lifecycleNotificationUrl"] = "https://webhook.azurewebsites.net/api/lifecycleNotifications";

配置中的第二个 URL 不存在。如果调用,返回 400。正确的配置应该是:

$request["notificationUrl"] = $conf['NotificationURL'];
$request["lifecycleNotificationUrl"] = $conf['NotificationURL'];

解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-31
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    相关资源
    最近更新 更多