0

Я успешно возвращаю результаты поиска из учетной записи пользователя OneDrive for Business, используя конечную точку https://graph.microsoft.com/v1.0/me/drive/root/microsoft.graph.search.OneDrive для бизнес-миниатюр с использованием графика Microsoft

Я использую эти результаты в федеративном поиске в нашем приложении и хотел бы использовать api для рендеринга эскизов для каждого элемента, когда он доступен.

У меня есть токен доступа для ресурса https://graph.microsoft.com, и все работает хорошо, кроме миниатюр.

Я в состоянии получить данные по сбору миниатюр назад, например:

[маленький] => Array (

[высота] => 350

[ширина] => 266

[URL] => HTTPS: //xxxxxxxxxxx-my.sharepoint.com/personal/xxxxxxxxxxxxxxxxx_onmicrosoft_com/_api/v2.0/drive/items/{item ID}/миниатюры/0/маленький/thumbnailContent )

Любые попытки получить доступ к этому значку thumbnailContent либо непосредственно в теге img, либо через ошибки возврата curl. Для curl я предоставляю токен доступа в заголовке.

получаю информацию об ошибке, как:

HTTP/1.1 403

X-MSDAVEXT_Error: 917656; Доступ + запрещен. + До + открытия + файлы + в + этом + позиции% 2c + вы + сусло + первый + + для просмотра + в + интернет + сайт + и + выберите + в + Option + до + логин + автоматически.

{ "Ошибка": { "код": "- 2147024891, System.UnauthorizedAccessException", "сообщение": "Доступ запрещен У вас нет разрешения на выполнение этого действия или доступ к этому ресурсу.."}}

Любая помощь будет оценена в решении того, что здесь требуется.

Я прочитал Мне может понадобиться токен sharepoint вместо графического токена. Если это так, я не могу понять, как получить идентификатор ресурса, который мне нужен, чтобы запросить нужный токен sharepoint.

спасибо.

+0

Hi Ray - Я смотрел репозиторий GitHub, чтобы узнать, есть ли какие-либо проблемы, и похоже, что есть. Комментарий 7 дней назад показывает, что они отключили предварительно аутентифицированные URL-адреса. Я бы следил за этой веткой и, возможно, добавлял к ней некоторые комментарии. https://github.com/OfficeDev/microsoft-graph-docs/issues/135 – jdruid

+0

Спасибо, я видел, что ... Я пытался отправить правильно аутентифицированные запросы для каждого эскиза URL-адреса, возможно, мне нужен токен sharepoint, но не увенчались успехом. Являются ли предварительно аутентифицированные URL-адреса единственным вариантом? –

+0

Я также попытался создать URL-адрес getpreview.ashx, как описано в этом сообщении [link] (https://blog.beecomedigital.com/2015/07/27/generate-thumbnail-of-a-document-stored-in -sharepoint-from-its-url /), и он работает, но у меня возникают проблемы с первой загрузкой, где она пока еще не аутентифицирована, но если я «просматриваю изображение» из браузера, это вызывает шаг авторизации и я хорош для своей сессии. Я могу, вероятно, взломать это на работу, но он не чувствует готовность к производству, и я полагаюсь на этот синтаксис url ... –

ответ

0

Графические разработчики заверяют нас в том, что неатрибутные URL-адреса эскизов приближаются, как указано в выпуске (который я начал) github.com/OfficeDev/microsoft-graph-docs/issues/135. Тем временем вы можете следовать обходному пути, который я намекнул там, и это похоже на то, что вы пытаетесь сделать. Как вы отметили, вам нужно предоставить токен доступа для API onedrive, который не совпадает с токеном доступа для API-интерфейса Graph. Вы должны проверить соответствующий OneDrive API documentation, но я думаю, что это сводится к тому, что «идентификатор ресурса», который вы ищете, является базовым URL для вашего OneDrive, например. https://contoso-my.sharepoint.com/. Вы можете просто проанализировать это из самого эскиза. Если вы делаете все это из JavaScript, я бы рекомендовал посмотреть на Adal.js, если вы еще этого не сделали.

Вы должны иметь возможность использовать маркер доступа к OneDrive API для выполнения запроса thumbnailContent. Если вы запросите responseType из blob, вы можете использовать FileReader.readAsDataURL (опять же, если вы в JavaScript), чтобы получить URL-адрес данных, который может находиться в теге изображения.

Прошло некоторое время с тех пор, как я просмотрел все это, но это было обходным путем, с которым я работал, когда я отправлял ссылку на эту проблему. Надеюсь, поможет.

+0

Спасибо, Майк ... Я смог реализовать javascript-подход с идентификатором ресурса, как описано в ваш ответ, а затем примените этот метод к моему приложению php для загрузки и кеширования стороны сервера эскизов, чтобы избежать любых проблем CORS или манифеста, необходимых для adal.js. Еще раз спасибо, ваш пост github и этот ответ были очень полезными. –

Смежные вопросы