Как использовать API-интерфейс sharepoint для поиска в Интернете только для приложений
Я пытаюсь использовать API-интерфейс поиска sharepoint (/_api/search) из приложения. Добавляя его с портала Azure, я вижу, что поиск выполняется только в разделе "делегированные разрешения". Когда я запустил его в тестировании с логином пользователя и одобрил его, он работал хорошо. Так как я не хочу, чтобы пользователь входил в систему, я нашел эту статью
Это заставило меня поверить, что можно будет использовать поиск только в качестве приложения, а не в качестве пользователя. Я выполнил все шаги, создал приложение через appregnew.aspx, я также добавил другое разрешение через appin v.aspx, поэтому я запросил следующие разрешения:
<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" />
<AppPermissionRequest Scope="http://sharepoint/search" Right="QueryAsUserIgnoreAppPrincipal" />
</AppPermissionRequests>
Я тестирую с использованием ADAL JAVA SDK следующим образом:
Future<AuthenticationResult> future = context.acquireToken(
resource, new ClientCredential(clientId,
clientSecret), null);
где ресурс - xxxxxx.sharepoint.com, и я позже использую этот токен в качестве токена на предъявителя.
Но когда я пытаюсь проверить это, я получаю следующую ошибку:
2018-08-05 11:03:22 WARN ODataUtils: 120 - Не удалось получить успешный ответ для uri [ https://xxxxxx.sharepoint.com/_api/search], причина [{"error_description":"Сервер был невозможно обработать запрос из-за внутренней ошибки. Для получения дополнительной информации об ошибке либо включите IncludeExceptionDetailInFaults (либо из ServiceBehaviorAttribute, либо из поведения конфигурации) на сервере, чтобы отправить информацию об исключении обратно клиенту, либо включите отслеживание в соответствии с документацией Microsoft .NET Framework SDK и проверка журналов трассировки сервера."}];
Так как это sharepoint online, у меня нет сервера, и я не использую.NET Framework, так как же я должен отладить это? или другая идея что я тут не так делаю?
Любая помощь будет принята с благодарностью.
1 ответ
Возможно, вы можете использовать Java для вызова SharePoint Search Api и показать результат (но нам нужно потратить много времени, чтобы исследовать это, есть много неопределенностей.)
Лучший выбор для вас - использовать VisualStudio для тестирования надстройки SharePoint. Microsoft предоставляет больше поддержки, и вы можете использовать готовый шаблон.
Вы можете использовать широкий спектр API-интерфейсов для поиска, которые SharePoint предлагает для надстроек поиска:
Клиентская объектная модель.NET (CSOM) Ключевые библиотеки:
Microsoft.SharePoint.Client.Search.dll ;
Silverlight CSOM Ключевые библиотеки:
Microsoft.SharePoint.Client.Search.Silverlight.dll ; Ключ объектной модели ECMAScript (JavaScript, JScript) (JSOM) libs:
SP.search.js ;
Поиск REST API http://server/_api/search/query
Некоторый демонстрационный код: клиентская объектная модель (CSOM) C#
using (ClientContext clientContext = new ClientContext("http://localhost"))
{
KeywordQuery keywordQuery = new KeywordQuery(clientContext);
keywordQuery.QueryText = "*";
SearchExecutor searchExecutor = new SearchExecutor(clientContext);
ClientResult<ResultTableCollection> results =
searchExecutor.ExecuteQuery(keywordQuery);
clientContext.ExecuteQuery();
}
Объектная модель JavaScript (JSOM)
var keywordQuery = new
Microsoft.SharePoint.Client.Search.Query.KeywordQuery(context);
keywordQuery.set_queryText('SharePoint');
var searchExecutor = new Microsoft.SharePoint.Client.Search.Query.SearchExecutor(context);
results = searchExecutor.executeQuery(keywordQuery);
context.executeQueryAsync(onQuerySuccess, onQueryFail);
REST HTTP GET запросить HTML
http://mylocalhost/_api/search/query?querytext='SharePoint'
HTTP POST запрос HTML
{
'__metadata' : {'type' : 'Microsoft.Office.Server.Search.REST.SearchRequest'},
'Querytext' : 'SharePoint'
}
Затем установите разрешения для VisualStudio и инструментов разработки Office 365 "Напа"
Дополнительную информацию о поиске можно добавить в: https://docs.microsoft.com/en-us/sharepoint/dev/general-development/search-add-ins-in-sharepoint