You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Office 365 Graph API编辑会议功能失效问题求助

问题排查与修复方案

从你遇到的 ErrorPropertyValidationFailure 错误来看,核心问题出在请求的JSON属性格式不符合Microsoft Graph API的验证要求,再加上一些请求头的不合理配置,导致签出操作失败。下面一步步拆解问题并给出修复方案:

1. 核心问题:DateTime格式不符合API要求

你的代码里手动拼接的JSON中,dateTime 字段后缀了 .0000000(7位毫秒),但Microsoft Graph API仅支持3位毫秒的ISO 8601格式(比如 2019-10-31T09:11:21.000),多余的毫秒位数会触发属性验证失败。

另外,手动拼接JSON很容易出现格式错误(比如换行符、引号转义问题),建议改用 json_encode 来生成请求体,更可靠。

2. 次要问题:硬编码Content-Length请求头

你在请求头里硬编码了 content-length: 86,但实际请求体的长度会随时间字符串变化,这会导致服务器接收到的内容长度与声明的不一致,同样会触发验证失败。应该让curl自动计算并添加这个头,无需手动设置。

修复后的代码示例

error_reporting(E_ALL);
$curl = curl_init();

// 生成符合API要求的UTC时间格式(3位毫秒)
$endnow = date("Y-m-d\TH:i:s.000");
// 使用json_encode构造请求体,避免手动拼接的格式错误
$requestBody = json_encode([
    "end" => [
        "dateTime" => $endnow,
        "timeZone" => "UTC"
    ]
]);

$authurl = "https://graph.microsoft.com/beta/users/guest".$_POST['signoutnumber']."@trustsystems.co.uk/events/";
curl_setopt_array($curl, array(
    CURLOPT_URL => $authurl . $id,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "PATCH",
    CURLOPT_POSTFIELDS => $requestBody,
    CURLOPT_HTTPHEADER => array(
        "Accept: */*",
        "Authorization: Bearer " . $result->access_token,
        "Cache-Control: no-cache",
        "Connection: keep-alive",
        "Content-Type: application/json",
        "Host: graph.microsoft.com",
        "accept-encoding: gzip, deflate",
        "cache-control: no-cache"
        // 移除硬编码的content-length,让curl自动处理
    ),
));

$response = curl_exec($curl);
$err = curl_error($curl);
// 新增:获取HTTP状态码,帮助更快定位问题
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);

curl_close($curl);

// 输出详细排查信息
if ($err) {
    echo "cURL Error #:" . $err;
} else {
    echo "HTTP Status Code: " . $httpCode . "\n";
    echo "Response: " . $response;
}

额外排查建议

  • 确认你的Access Token拥有 Calendars.ReadWrite 权限:虽然之前功能正常,但如果token过期或权限被调整,也可能导致操作失败。
  • 暂时切换到Graph API的v1.0版本测试:Beta版本可能存在临时的不稳定更新,v1.0版本更稳定,适合生产环境使用。

内容的提问来源于stack exchange,提问作者Josh Whiddett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:25:50