Невозможно добавить вложение в сообщение в надстройке Outlook, используя Outlook rest API
Я вижу этот Доступ к Outlook RestAPI из веб-надстройки Outlook, но ничего о вложении нет.
Мне удалось выполнить запрос API outlook rest из моей надстройки, следуя https://dev.office.com/docs/add-ins/outlook/use-rest-api?product=outlook этот учебник. Например, мне удалось получить некоторые детали сообщения), но у меня есть 2 проблемы:
Я не могу добавить вложение с вызовом outlook rest API к сообщению. Я пытаюсь позвонить с itemId, как здесь:
https://outlook.office.com/api/v2.0/me/messages/" + itemId +"/attachments
Я получаю ошибку:
{"error":{"code":"ErrorAccessDenied","message":"The api you are trying to access does not support item scoped OAuth."}}
Я пытаюсь изменить разрешения (ReadWriteMailbox/ReadWriteItem) на манифест, но ничего не помогает..
Иногда вызов Office.context.mailbox.getCallbackTokenAsync({ isRest: true }, function().... функция работает и возвращает токен доступа, а иногда возвращает ошибку, я не знаю также, в чем причина. Ошибка, которую я получаю иногда это:
OSF.DDA.AsyncResult error:OSF.DDA.Error status:"failed"
Надеюсь, вы могли бы помочь мне, спасибо всем!!
1 ответ
На #1 ошибка указывает на то, что у вашего токена есть область действия только для текущего элемента. REST API не может использовать этот вид токена для изменения вложений, поэтому вы получаете эту ошибку. Правильный способ, которым это должно работать, состоит в том, что вы указываете ReadWriteMailbox
в манифесте надстройки, а затем возвращаемый токен должен быть токеном области почтового ящика. Тем не менее, в настоящее время есть ошибка с обработкой рабочего стола Outlook getCallbackTokenAsync
из-за этого он по-прежнему некорректно возвращает токен предметной области. Эта ошибка была исправлена, но обновление еще не было опубликовано.
Если вы хотите проверить это, скопируйте полученный токен и перейдите на https://jwt.io/. Вставьте его в поле "Кодированный" и проверьте полезную нагрузку. Если ты видишь "ver": "Exchange.Callback.V1"
это токен предметной области. Если ты видишь "ver": "Exchange.Callback.V2"
это почтовый ящик.
На #2 понятия не имею. Было бы полезно, если бы вы могли получить на своем клиентском компьютере Outlook трассировку Fiddler, которая ловит надстройку, выполняющую запрос токена.