从此doc中,我们可以使用getCallbackTokenAsync
获取令牌,我们可以使用该令牌来调用第三方系统中的Exchange Web服务。
引号是“获取包含用于从Exchange Server获取附件或项目的令牌的字符串”。它没有对“写”权限进行任何限制。
然后,根据此doc,如果将加载项权限更改为ReadWriteMailbox
,则可以“读取和写入用户邮箱中任何项目的所有属性。”
在我的加载项中,我将权限级别设置为ReadWriteMailbox
,并且使用从getCallbackTokenAsync
返回的令牌来验证exchange service
。但是,当我尝试将自定义属性写入Exchange服务器时,出现此错误Microsoft.Exchange.WebServices.Data.ServiceResponseException: 'The requested web method is unavailable to this caller or application.'
我的代码
exchangeService.Credentials = new OAuthCredentials({accesstoken returned by mailbox.getCallbackTokenAsync});
Guid PS_PUBLIC_STRINGS = new Guid("00020329-0000-0000-C000-000000000046");
ExtendedPropertyDefinition extendedPropertyDefinition = new ExtendedPropertyDefinition(PS_PUBLIC_STRINGS, "cecp-a8e14732-37cf-4a46-b69f-2539f4059948", MapiPropertyType.String);
var obj = new
{
customProp: "cp"
};
Email.SetExtendedProperty(extendedPropertyDefinition, JsonConvert.SerializeObject(obj));
Email.Update(ConflictResolutionMode.AlwaysOverwrite); //this erros occurs here
答案 0 :(得分:1)
getCallbackTokenAsync提供的令牌只能用于此处记录的方法:https://docs.microsoft.com/en-us/outlook/add-ins/web-services
您可以参考以下链接,找到直接向EWS进行身份验证的方法:https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/authentication-and-ews-in-exchange
不建议直接通过EWS更新自定义属性,仅应将应用用于此目的。