2017-11-14 6 views
1

Microsoft Graph를 사용하는 기본 응용 프로그램을 구축 중입니다. 관리자 계정을 통해 조직의 모든 사용자에 대한 OneDrive의 모든 파일을 읽고 싶습니다.모든 사용자 드라이브에 관리자로 액세스하십시오.

인증 코드를 얻기 위해 (Azure AD 2.0) OAUTH 인증 워크 플로를 사용하고 있습니다. 그 후 액세스 토큰과 새로 고침 토큰을 얻습니다.

그러나 나는 어떤 사용자의 드라이브에 액세스하려고하면

graphClient.Drives["[email protected]"].Root.Request().GetAsync(); 
// where graphClient is instance of GraphServiceClient 

내가 얻을 :

generalException

메시지 : 서비스에서 반환 된 예기치 않은 예외. 호출 스택으로

:

at Microsoft.Graph.HttpProvider.<SendAsync>d__19.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() 
    at Microsoft.Graph.BaseRequest.<SendRequestAsync>d__34.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() 
    at Microsoft.Graph.BaseRequest.<SendAsync>d__32`1.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() 
    at Microsoft.Graph.DriveItemRequest.<GetAsync>d__6.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 
    at OneDrive_Writer.OneDriveWriter.<loadRootDriveFolder>d__9d.MoveNext() 

다른 모든 사용자가 액세스 할 수있는 관리자가 파일을 구동하는 방법이 있나요?

참고 : 관리자로 로그인하면 관리자의 OneDrive 계정에 액세스 할 수 있습니다.

+0

어떤 범위를 요청 했습니까? –

+0

전체 권한 컨트롤 (FIle.ReadWrite.ALL 등)을 포함하는 동안 모든 위임 된 권한 (총 30 개)을 설정했습니다. 처음에는 권한 문제 일 것이라고 생각했지만 성공하지 못했지만 가능한 모든 권한을 설정했습니다. . –

답변

1

예제의 Drives 인덱서에는 upn이 아닌 driveId가 필요합니다.

사용 권한이 올바르게 설정되어 있고 유효한 액세스 토큰이 있다고 가정하면 이렇게 할 수 있습니다.

// Access the users in the org. 
var users = await graphClient.Users.Request().GetAsync(); 

// Get the drives for a user. 
var drives = await graphClient.Users[users[0].Id].Drives.Request().GetAsync(); 

// Get the specific drive metadata for a user 
var drive = await graphClient.Drives[drives[0].Id].Request().GetASync(); 
+0

이것은 트릭을 만들었습니다. 감사! –