Не удается добавить вложение к сообщению в надстройке Outlook с помощью Outlook rest API

Я вижу этот Доступ к Outlook RestAPI из Outlook в Интернете Добавить -в вопрос, а вот про вложения ничего нет.

Мне удалось сделать запрос API Outlook rest из моей надстройки, следуя https://dev.office.com/docs/add-ins/outlook/use-rest-api?product=outlook этого руководства. Например, мне удалось получить некоторые детали сообщения), но у меня есть 2 проблемы:

  1. Я не могу добавить вложение с помощью вызова API Outlook rest к сообщению. Я пытаюсь позвонить с 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) в манифесте, но ничего не помогает ..

  1. Иногда вызов Office.context.mailbox.getCallbackTokenAsync ({isRest: true}, function () .... функция работает и возвращает токен доступа, а иногда возвращает ошибку, я также не знаю, в чем причина. Ошибка, которую я получаю иногда бывает:

    OSF.DDA.AsyncResult
    error:OSF.DDA.Error
    status:"failed"
    

Надеюсь, вы могли бы мне помочь, всем спасибо !!


person OriEng    schedule 23.02.2017    source источник


Ответы (1)


На №1 ошибка указывает на то, что ваш токен ограничен только текущим элементом. REST API не может использовать этот токен для изменения вложений, поэтому вы получите эту ошибку. Этот должен работать правильно: вы указываете ReadWriteMailbox в манифесте надстройки, а затем возвращаемый вами токен должен быть токеном области почтового ящика. Однако в настоящее время существует ошибка обработки getCallbackTokenAsync настольным Outlook в Outlook, из-за которой он по-прежнему некорректно возвращает токен с привязкой к элементу. Эта ошибка была исправлена, но обновление еще не было опубликовано публично.

Если вы хотите это проверить, скопируйте полученный токен и перейдите на страницу https://jwt.io/. . Вставьте его в поле «Закодировано» и проверьте полезные данные. Если вы видите "ver": "Exchange.Callback.V1", это токен области действия. Если вы видите "ver": "Exchange.Callback.V2", это область для почтового ящика.

На № 2 я понятия не имею. Было бы полезно, если бы вы могли получить трассировку Fiddler на своем клиентском компьютере Outlook, которая улавливает надстройку, выполняющую запрос токена.

person Jason Johnston    schedule 23.02.2017
comment
Во-первых, большое вам спасибо. Я пытаюсь снова протестировать Outlook 365 в браузере и на рабочем столе Outlook. Я установил разрешения «ReadWriteMailbox» в файле манифеста и запустил. Я получаю токен доступа и проверяю его на jwt.io, чтобы найти значение «ver», и получаю: ver: Exchange.Callback.V1. Итак, вы говорите, что есть ошибка? Если я получу Callback.V2, чтобы я мог добавить вложение к сообщению? И когда она исправлена? И я выяснил, почему я получаю ошибку токена доступа (вопрос 2). Элемент должен быть сохранен до того, как мы получим токен доступа, поэтому я сохраняю его с помощью функции Office.context.mailbox.item.saveAsync. Спасибо еще раз !! - person OriEng; 26.02.2017
comment
Да, это ошибка в Outlook. Это исправлено в сборках после 16.0.7902.1000. У меня нет графика, когда это станет широко доступным. - person Jason Johnston; 27.02.2017
comment
У меня все еще такая же ошибка при добавлении вложения с помощью api outlook rest ... есть исправление или что-то в этом выпуске, когда я проверяю JWE, у меня есть версия: Exchange.Callback.V1,? tnx - person OriEng; 05.07.2017
comment
Какая у вас версия Outlook? - person Jason Johnston; 05.07.2017
comment
Версия Outlook, которую я использую, что ли? Я пробую использовать Outlook OWA в Chrome и IE, а также на рабочем столе Outlook 2016 и получаю тот же ответ. - person OriEng; 05.07.2017
comment
Да, версия, которую вы используете. - person Jason Johnston; 05.07.2017
comment
Версия рабочего стола Outlook: 2016 MSO (16.0.8201.2102) 32 бит, а в сети я использую только основной адрес: outlook.office.com/owa в IE и Chrome. TNX за вашу помощь - person OriEng; 05.07.2017
comment
У вас должны быть исправления для этого. Вы знакомы с использованием Fiddler? Наша команда инженеров спросила, можете ли вы записать трассировку Fiddler, когда рабочий стол Outlook запрашивает токен. - person Jason Johnston; 05.07.2017
comment
Я столкнулся с той же проблемой, токен, возвращаемый методом getCallbackTokenAsync, возвращает токен с областью действия элемента. Он мне нужен для обновления определенного свойства расширения в почтовом элементе. Возможен ли обходной путь? - person Swasti Gupta; 28.02.2019