Работает ли Microsoft Graph API / search () при использовании токена только для приложения - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь использовать API графа (v1.0) для поиска файлов и папок в папках sharepoint / onedrive нашей команды, но при использовании токена только для приложения я постоянно не получаю результатов для любого запроса /search(...), который я пытаюсь,

Я зарегистрировался и подал заявку с https://apps.dev.microsoft.com и запросил и дал согласие на разрешения, указанные в Документации API ;

User.ReadWrite.All,Group.Read.All, Sites.Read.All, Sites.ReadWrite.All, Group.ReadWrite.All, Sites.Manage.All, Files.ReadWrite.All, User.Read.All, Files.Read.All, Sites.FullControl.All

Когда я запрашиваю токен из https://login.microsoftonline.com/ Я вижу предоставленные разрешения в полезной нагрузке.

Используя этот токен, я могу успешно получить доступ к диску и получить информацию о его содержимом, используя drive/root

У меня есть небольшая тестовая папкаструктура, содержащая несколько простых текстовых файлов.

Я могу подтвердить, что этот токен дает мне доступ к моим файлам и папкам, рекурсивно вызывая drives/{driveid}/items/{folderid}/children для создания полной древовидной структуры.

Однако,когда я пытаюсь найти на диске имена файлов или текстовые фразы, которые, как я знаю, существуют, я не получаю никаких результатов, независимо от того, какую комбинацию путей или поисковых терминов я использую.Я никогда не видел результаты поиска по токену только для приложения.

Примеры, которые я пробовал;

sites/root/drive/search(q='test')

drive/root/search(q='test')

drives/{driveid}/search(q='test')

drives/{driveid}/root/search(q='test')

Фраза "test" существует как в виде имени файла, так и в текстовом содержимом некоторых файлов.

Я получаюответ HTTP:200, но коллекция значений https://graph.microsoft.com/v1.0/$metadata#Collection(driveItem) всегда пуста.

Я создаю http-запросы в моем приложении (Coldfusion), а не использую SDK.Я задавался вопросом, были ли у меня проблемы с кодировкой, поэтому попробовал различные подходы url-кодирования поисковой части url (q='test') и т. Д. Я также попытался выполнить те же запросы с Postman и cUrl, но результаты совпадают.Пусто.

Единственное, что работает, это когда я пытаюсь выполнить те же поиски с помощью Graph Explorer, я получаю результаты, которые ожидаю увидеть.

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

Кто-нибудь знает, действительно ли .../search() работает для токенов только для приложения?

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Здесь снова тот же вопрос.Ответ был прокомментирован разработчиком Microsoft.Он подтвердил, что это ошибка.

0 голосов
/ 24 сентября 2018

Кто-нибудь знает, действительно ли ... / search () работает для токенов только для приложений?

Ответ - да, ../ search () действительно работаетдля токенов только для приложения

Согласно моему тесту, следующий API поиска хорошо работает для токена только для приложения

https://graph.microsoft.com/v1.0/drive/root/microsoft.graph.search(q='test')

    https://graph.microsoft.com/v1.0/drives/{driveid}/root/microsoft.graph.search(q='test')

    https://graph.microsoft.com/v1.0/drives/{driveid}/microsoft.graph.search(q='test')

https://graph.microsoft.com/v1.0/sites/root/drive/search(q='test')

Для конфигурации прав просто поставьте " Files.Read.All, Files.ReadWrite.All, Sites.Read.All, Sites.ReadWrite.All"в GraphScopes в файле конфигурации проекта в виде состояния документов .

Приведенный выше ответ основан на вашем описании: **** зарегистрировать приложение в http://apps.dev.microsoft.com/. Вы можете игнорировать SDK, хотя это лучший выбор.Если у вас нет конфигурации проекта с GraphScopes, вам нужно передать область для запроса авторизации, это затруднит работу.

Если ваше приложение означает только приложение, зарегистрируйте приложение в SharePointонлайн , тогда API поиска по графику не будет работать.SharePoint не передает AccessToken напрямую в Graph.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...