Microsoft graph api 以管理员身份访问所有用户驱动器

Microsoft graph api 以管理员身份访问所有用户驱动器,microsoft-graph-api,onedrive,Microsoft Graph Api,Onedrive,我正在构建一个使用Microsoft Graph的本机应用程序。 我想通过管理员帐户读取组织中所有用户的OneDrive中的所有文件 我正在使用(Azure AD 2.0)OAUTH授权工作流来获取授权代码。之后,我获得访问令牌和刷新令牌 但是,当我尝试访问任何用户的驱动器时: graphClient.Drives[”amit@csys.onmicrosoft.com“].Root.Request().GetAsync(); //其中graphClient是GraphServiceClient的

我正在构建一个使用Microsoft Graph的本机应用程序。 我想通过管理员帐户读取组织中所有用户的OneDrive中的所有文件

我正在使用(Azure AD 2.0)OAUTH授权工作流来获取授权代码。之后,我获得访问令牌和刷新令牌

但是,当我尝试访问任何用户的驱动器时:

graphClient.Drives[”amit@csys.onmicrosoft.com“].Root.Request().GetAsync();
//其中graphClient是GraphServiceClient的实例
我得到:

一般免疫

消息:服务返回意外异常

使用调用堆栈:

在Microsoft.Graph.HttpProvider.d_u19.MoveNext()上
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()中
在Microsoft.Graph.BaseRequest.d_u34.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()中
在Microsoft.Graph.BaseRequest.d_u32`1.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()中
在Microsoft.Graph.DriveItemRequest.d_u6.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()中
在OneDrive_Writer.OneDrive Writer.d_u9d.MoveNext()中
管理员是否有办法访问所有其他用户的驱动器文件


注意:当我以管理员身份登录时,我可以访问管理员的OneDrive帐户。

在您的示例中,驱动器索引器需要的是驱动器ID,而不是upn

假设您的权限设置正确,并且您拥有有效的访问令牌, 你会这样做的

// 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();

您请求了哪些范围?我已设置了所有委派权限(总共30个),同时包括完全站点控制、FIle.ReadWrite.all等。最初我认为这将是一个权限问题,但我通过设置所有可能的权限来解决,但没有成功。