Java调用Graph API创建Event时DoNotForward属性配置失效问题咨询
问题排查与解决方案
核心问题原因
你遇到的配置不生效问题是以下3个错误共同导致的:
- 错误设置了
oDataType属性:SingleValueLegacyExtendedProperty的oDataType固定为#microsoft.graph.singleValueLegacyExtendedProperty,你误写为值的类型Boolean,导致扩展属性无法被Graph API识别。 - 没有使用原生支持的属性:当前微软Graph API v1.0已经原生支持
doNotForward布尔属性,不需要手动配置MAPI扩展属性,你绕了弯路还出现了配置错误。 - 扩展属性值类型错误:即使使用扩展属性配置,布尔类型的值需要传布尔值
true,不能传字符串格式的"true"。
最优解决方案
直接删除你代码中所有和SingleValueLegacyExtendedProperty相关的配置,仅需要在Event对象初始化时新增一行赋值即可:
event.doNotForward = true;
这个原生属性的效果和你想通过扩展属性实现的DoNotForward完全一致,配置更简单,不会出现兼容性问题。
扩展属性配置修正方案
如果你出于特殊需求必须使用扩展属性实现,把对应配置段修改为如下内容即可:
SingleValueLegacyExtendedPropertyCollectionResponse singleValColRes = new SingleValueLegacyExtendedPropertyCollectionResponse(); SingleValueLegacyExtendedProperty singleValProp = new SingleValueLegacyExtendedProperty(); singleValProp.id = "Boolean {00020329-0000-0000-C000-000000000046} Name DoNotForward"; singleValProp.value = true; // 传入布尔类型值,不要加引号 singleValProp.oDataType = "#microsoft.graph.singleValueLegacyExtendedProperty"; // 修正oDataType取值 singleValColRes.value.add(0, singleValProp); event.singleValueExtendedProperties = new SingleValueLegacyExtendedPropertyCollectionPage(singleValColRes, null);
验证方法
修改完成后调用Graph API的事件查询接口,带上参数$expand=singleValueExtendedProperties($filter=id eq 'Boolean {00020329-0000-0000-C000-000000000046} Name DoNotForward'),即可确认属性是否被正确写入。你原有创建事件的Calendars.ReadWrite权限无需额外调整。
内容的提问来源于stack exchange,提问作者PastyGreen
相关产品推荐
相关产品推荐

