Я разработал веб-надстройку Outlook, которую можно использовать в собственном клиенте Outlook, мобильном приложении и Outlook Web для загрузки файлов в онлайн-библиотеку документов SharePoint.
- В надстройке JavaScript вызывает новый API Office.js getAccessTokenAsync.Это говорит приложению Office Office о необходимости получить токен доступа к надстройке.(Здесь и далее это называется токеном доступа, поскольку он заменяется вторым токеном позднее в процессе. Например, декодированный токен доступа для начальной загрузки.
- Если пользователь не вошел в систему, приложение узла Officeоткрывает всплывающее окно для входа в систему пользователя.
- Если текущий пользователь впервые использует вашу надстройку, ему или ей будет предложено дать согласие.
- Хост-приложение Office запрашивает токен доступа из конечной точки Azure AD v2.0 для текущего пользователя.
- Azure AD отправляет маркер начальной загрузки в хост-приложение Office.
- Хост-приложение Office отправляеттокен доступа к надстройке как часть объекта результата, возвращаемого вызовом getAccessTokenAsync.
- JavaScript в надстройке выполняет HTTP-запрос к веб-API, который размещен в том же полностью определенном домене, что инадстройка и включает токен доступа в качестве подтверждения авторизации.
- Код на стороне сервера проверяет входящий токен доступа.
- Код на стороне сервера использует поток «от имени» для получения токена доступа.
- Azure AD возвращает токен доступа к надстройке.
- Кэши кода на стороне серверамаркер доступа.
- Серверный код отправляет запросы на сервер обмена для получения вложения и загрузки вложения в SharePoint.
- API REST SharePoint возвращает данные в надстройку, которая может передавать ихк пользовательскому интерфейсу надстройки.
- Когда срок действия токена доступа истекает, код на стороне сервера может использовать свой токен обновления для получения нового токена доступа.
Эта надстройкаработает на настольном компьютере и в веб-Outlook, но не всегда работает на мобильных устройствах с помощью собственного приложения Outlook.
На мобильном устройстве: оно работает случайным образом для некоторых учетных записей, тогда как один и тот же код не работает для других учетных записей независимо от устройства.
Мы проверили версии Outlook, устройства, уровень разрешений учетной записи и не видим никаких проблем.Во время отладки мы подозревали, что проблема может заключаться в обработке документов с сервера EWS.В мобильном приложении outlook значения токена и идентификатора вложения отличаются от десктопного / веб-клиента для одного и того же кода.
Кодовые ссылки: https://docs.microsoft.com/en-us/outlook/add-ins/get-attachments-of-an-outlook-item
Мы получаем ошибку в приведенном ниже фрагменте кода, на который ссылаются вышеупомянутые ссылки.
ExchangeService service = new ExchangeService();
service.Credentials = new OAuthCredentials(request.attachmentToken);
service.Url = new Uri(request.ewsUrl);
var getAttachmentsResponse = exchangeService.GetAttachments(attachmentIds.ToArray(),
null,
new PropertySet(BasePropertySet.FirstClassProperties,
ItemSchema.MimeContent));
getAttachmentsResponse.OverallResult returning ERROR in mobile for particular users