Из этого документа мы можем использовать getCallbackTokenAsync
для получения токена, с помощью которого мы можем использовать его для вызова веб-служб Exchange в сторонней системе.
Цитата «Получает строку, содержащую токен, используемый для получения вложения или элемента с сервера Exchange». Он не устанавливает каких-либо ограничений для разрешения на запись.
Затем, в соответствии с этим документом , если мы изменим разрешение надстройки на 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