使用Graph API更新事件时遇'attendees属性不存在'错误排查
问题排查与解决方案
1. 修复请求体JSON语法错误
你的请求体JSON存在两处语法问题,这是导致API误报属性不存在的核心原因:
- 所有键名(如
attendees、body)未用双引号包裹,JSON规范要求键名必须是双引号字符串 - 除最后一个键值对外,其余项末尾缺少逗号
修正后的请求体如下:
{ "attendees": [{ "emailAddress": { "address": "test@test.com", "name": "Jan Kowalski" }, "type": "required" }], "body": { "content": "" }, "end": { "dateTime": "2022-11-20T21:13:51", "timeZone": "Europe/Warsaw" }, "location": { "displayName": "Dom" }, "start": { "dateTime": "2022-11-13T21:13:51", "timeZone": "Europe/Warsaw" }, "subject": "My event" }
2. 修正请求URL格式
当前请求URL中v1.0后多了一个斜杠,需改为:
https://graph.microsoft.com/v1.0/me/events/${id}
虽然部分服务器会忽略多余斜杠,但规范的URL可避免潜在解析异常。
3. 验证MSAL令牌权限
既然Graph Explorer的令牌可正常执行更新,说明账号本身具备权限,需确认MSAL请求的权限范围:
- 检查MSAL配置的scopes是否包含
https://graph.microsoft.com/Calendars.ReadWrite - 解码自身令牌(如通过jwt解析工具)查看
scp字段,确认是否包含该权限 - 若权限缺失,需更新MSAL的权限请求逻辑,重新获取包含正确权限的令牌
4. 确认事件类型
特殊类型事件(如会议系列实例、共享日历事件)可能存在属性限制,但结合你能正常获取/删除事件、Graph Explorer可更新的情况,此可能性较低,可额外确认目标事件为普通个人日历事件。
内容的提问来源于stack exchange,提问作者Ewelin
相关产品推荐
相关产品推荐

