2015-01-15 4 views
-1

안녕하세요 Office 365 Sharepoint의 일부 목록에 액세스하려고합니다. 최신 API를 통해 MyFiles 목록을 호출 할 수 있었지만 나머지 API를 사용해야하는 다른 목록을 호출하는 것이 좋습니다. 파일에 액세스하는 데 사용하는 것과 동일한 액세스 토큰을 사용하고 있지만 아래 코드는 권한이없는 오류를 발생시킵니다. 누구든지 내가 잘못 가고있는 제안이 있습니까? 인증 오류가 발생하면Office 365 Sharepoint 나머지 호출

string requestUrl = "https://mycompany.sharepoint.com/_api/Web/Lists/"; 
HttpClient client = new HttpClient(); 
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUrl); 
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/atom+xml")); 
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); 
HttpResponseMessage response = await client.SendAsync(request); 

if (response.IsSuccessStatusCode) 
{ 
     string responseString = await response.Content.ReadAsStringAsync(); 
     return responseString; 
} 
return "Problem"; 

답변

0

X-Ms-diagnostics header 포함 오피스 365 개를 반환 HTTP 응답 :

헤더의 형식은 다음과 같습니다

X-Ms-diagnostics = errorId ";" source ";" reason ";" fault 

sourcereason 속성은 오류에 대한 세부 사항이 포함 예 :

Reason: Token contains invalid signature. 

Source: invalid_client 

다음 예제에서는 응답 오류 정보를 검색하는 방법을 보여줍니다.

using(var client = new HttpClient()) 
{ 
    var request = new HttpRequestMessage(HttpMethod.Get, endpointUrl); 
    request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/atom+xml")); 
    request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); 
    var response = client.SendAsync(request).Result; 

    if (!response.IsSuccessStatusCode && response.StatusCode == HttpStatusCode.Unauthorized) 
    { 
     var diagnosticsValue = response.Headers.GetValues("x-ms-diagnostics").FirstOrDefault(); 

    } 
} 
관련 문제