2017-11-08 3 views
1

Microsoft Graph에 대한 비효율적 인 후속 요청을 피하기 위해 개인 사용자의 개인 사이트 (OneDrive for Business)에 대한 정보를 컬렉션에 포함 할 수 있어야합니다.

/users?$select=id,mail,mySite을 통해 사용자 컬렉션을 가져올 때 Microsoft Graph API가 mySite 필드를 쿼리 할 수 ​​없습니다. 이 사실은 Graph API docs에 설명되어 있습니다. 따라서 우리는 대안을 찾고 있었고, 건너 온 :

GET /users?$expand=drive 

또는

GET /users?$expand=drives 

drive는 사용자의 개인 드라이브에 해당하고 mySite과 동일한 필드 webUrl을 가지고 있기 때문에

을.

그러나 요청은 다음과 같은 오류가 발생 :

{ 
    "error": { 
     "code": "InternalServerError", 
     "message": "Value cannot be null. Parameter name: source", 
     "innerError": { 
      "request-id": "15d69169-937a-4525-a904-e4107704d8f1", 
      "date": "2017-11-08T02:11:17" 
     } 
    } 
} 

이 유효한 문서화 관계이다. 또한 쿼리 매개 변수 $expand의이 사용이 지원되지 않는다는 문서는 어디에도 없습니다. $expand은 현재 beta/users에 의해서만 지원되는 메모 인 here이지만, 여전히 같은 오류로 실패합니다.

GET /users?$expand=drive&$filter=drive ne null 
: (위에서 언급 한 바와 같이)

오류의 잠재적 인 원인은 사용자가 아직 개인 사이트를 만들지 않은 것을 수, 따라서 우리는 단지 다음도 빈 목록을 반환하고 있습니다 가정 drives 시도

그러나 이것은 또한 Filter is not supported이라는 오류를 반환합니다. 비록 그 $filter 같은 문서화되지 않은 사용할 수 없습니다. $expand=drive($select=webUrl;$filter=webUrl ne null)은 문서화 된 here으로 지원되지 않습니다 (올바르게 이해하는 경우).

Office 기능 제안 플랫폼 인 Stack Overflow와 Microsoft 기술 커뮤니티 개발자 그룹을 성공적으로 검색했습니다.

아직 발견 API가 있지만 앱 전용 토큰을 사용하기 때문에 실제로는 옵션이 아닙니다. 또한 here에서 설명한 것처럼 Microsoft Graph에서도이를 대체해야하는 것처럼 보입니다.

답변

0

user 엔터티의 drive 확장은 Microsoft Graph에서 지원되지 않습니다. 이유에 관해서, 나는 설명하려고 시도 할 것이다.

이 동작을 이해하기 위해 특정 엔터티의 출처를 고려하여 가져 왔습니다. 이 경우 user은 Active Directory에서 가져오고 drive은 SharePoint에서 가져온 것입니다. documentation에서 언급 한 바와 같이

:

Note: Not all relationships and resources support the $expand query parameter. For example, you can expand the directReports , manager , and memberOf relationships on a user, but you cannot expand its events , messages , or photo relationships.

단지 예제를 사용하여이 events, messages, 또는 photo의 Exchange에서 모든 소스 동안 directReports, managermemberOf 모든 AD에서 공급되는 것을 통지.

설명서가 설명하려고 시도하는 내용은 (다소 혼란 스럽지만 다소 혼동 스럽지만) $expand은 서비스 경계를 ​​넘을 수 없다는 것입니다. 관계가 한 서비스에서 다른 서비스 (예 : Exchange 및 SharePoint)와 교차하는 경우 Microsoft Graph는 한 번의 호출로 해당 경계를 탐색 할 수 없습니다.

이 부분은 다른 규칙과 제약 조건이있는 Microsoft Graph를 통해 부상하는 다양한 서비스에서 비롯됩니다. 예를 들어 Exchange에는 OneNote보다 조절에 대한 규칙이 다릅니다. $expand을 통한 서비스 간 이동은 적용 할 규칙을 결정할 때 문제가됩니다.

희망이 도움이됩니다.