Я пытаюсь использовать 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()
работает для токенов только для приложения?