C# 401未经编程搜索SharePoint REST API授权

C# 401未经编程搜索SharePoint REST API授权,c#,.net-core,sharepoint-online,C#,.net Core,Sharepoint Online,如何以编程方式搜索sharepoint并获得搜索结果。下面的代码段始终返回401个未经授权的结果。我可以直接从浏览器转到我们的sharepoint url并获得搜索结果。但为什么我在尝试从代码中执行相同操作时会出现未经授权的错误呢。我是否需要从Sharepoint管理员处获得任何特殊权限 public async Task<string> GetResultsFromSharePointApiCall(string userToken, string searchTerm)

如何以编程方式搜索sharepoint并获得搜索结果。下面的代码段始终返回401个未经授权的结果。我可以直接从浏览器转到我们的sharepoint url并获得搜索结果。但为什么我在尝试从代码中执行相同操作时会出现未经授权的错误呢。我是否需要从Sharepoint管理员处获得任何特殊权限

public async Task<string> GetResultsFromSharePointApiCall(string userToken, string searchTerm)
        {
           
            var response = string.Empty;
            try
            {
                string siteCollection = "https://mycompany.sharepoint.com/search/_api/search/query?querytext=";
                HttpWebRequest endpointRequest = (HttpWebRequest)HttpWebRequest.Create(siteCollection+ searchTerm);
                endpointRequest.Method = "GET";
                endpointRequest.Accept = "application/json;odata=verbose";
                endpointRequest.Headers.Add("Authorization", "Bearer " + userToken);
                HttpWebResponse endpointResponse = (HttpWebResponse)endpointRequest.GetResponse();
                WebHeaderCollection header = endpointResponse.Headers;

                var encoding = ASCIIEncoding.ASCII;
                using (var reader = new System.IO.StreamReader(endpointResponse.GetResponseStream(), encoding))
                {
                    response = reader.ReadToEnd();
                }
               
            }
            catch (Exception ex)
            {
                // Http Error
                throw ex;
            }
            return response;
        }
public异步任务GetResultsFromSharePointApiCall(字符串userToken,字符串searchTerm)
{
var response=string.Empty;
尝试
{
字符串siteCollection=”https://mycompany.sharepoint.com/search/_api/search/query?querytext=";
HttpWebRequestEndpointRequest=(HttpWebRequest)HttpWebRequest.Create(siteCollection+searchTerm);
endpointRequest.Method=“GET”;
endpointRequest.Accept=“application/json;odata=verbose”;
endpointRequest.Headers.Add(“授权”、“承载人”+用户令牌);
HttpWebResponse endpointResponse=(HttpWebResponse)endpointRequest.GetResponse();
WebHeaderCollection标头=endpointResponse.Headers;
var encoding=ascienceoding.ASCII;
使用(var reader=new System.IO.StreamReader(endpointResponse.GetResponseStream(),编码))
{
response=reader.ReadToEnd();
}
}
捕获(例外情况除外)
{
//Http错误
掷骰子;
}
返回响应;
}