我正在尝试从应用程序使用sharepoint在线搜索api(/ _api / search)。从Azure门户添加它,我看到搜索仅在“授权权限”部分中。当我通过用户登录进行测试并批准它时,它运行良好。 由于我不需要用户登录,因此找到了这篇文章
这使我相信可以将搜索仅用作应用,而不是用户。我按照所有步骤操作,通过appregnew.aspx创建了应用程序,还通过appinv.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文档,并检查服务器跟踪日志。“}];
由于这是在线共享点,所以我没有服务器,也没有使用.NET框架,所以我还必须通过什么其他方式调试它?或其他想法我在这里做错了吗?
任何帮助将不胜感激。
答案 0 :(得分:-1)
也许您可以使用Java来调用SharePoint Search Api并显示结果(但我们需要花很多时间对此进行研究,但存在很多不确定性。)
最适合您的选择是使用VisualStudio测试SharePoint加载项。 Microsoft提供了更多支持,您可以使用现成的模板。
您可以使用SharePoint为搜索加载项提供的各种搜索相关API:
.NET客户端对象模型(CSOM)
关键库:
Microsoft.SharePoint.Client.Search.dll;
Silverlight CSOM
关键库:
Microsoft.SharePoint.Client.Search.Silverlight.dll;
ECMAScript(JavaScript,JScript)对象模型(JSOM)
关键库:
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和“ Napa” Office 365开发工具设置权限
有关搜索的更多信息,请添加: https://docs.microsoft.com/en-us/sharepoint/dev/general-development/search-add-ins-in-sharepoint