以管理员身份访问所有用户驱动器
Access all user drives as Admin
我正在构建一个使用 Microsoft Graph 的本机应用程序。
我想通过管理员帐户读取组织中所有用户的 OneDrive 中的所有文件。
我正在使用 (Azure AD 2.0) OAUTH 授权工作流来获取授权码。之后我获得了访问令牌和刷新令牌。
然而,当我尝试访问任何用户的驱动器时:
graphClient.Drives["amit@csys.onmicrosoft.com"].Root.Request().GetAsync();
// where graphClient is instance of GraphServiceClient
我得到:
generalException
Message: Unexpected exception returned from the service.
调用堆栈:
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 帐户。
您的示例中的驱动器索引器需要一个 driveId,而不是 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();
我正在构建一个使用 Microsoft Graph 的本机应用程序。 我想通过管理员帐户读取组织中所有用户的 OneDrive 中的所有文件。
我正在使用 (Azure AD 2.0) OAUTH 授权工作流来获取授权码。之后我获得了访问令牌和刷新令牌。
然而,当我尝试访问任何用户的驱动器时:
graphClient.Drives["amit@csys.onmicrosoft.com"].Root.Request().GetAsync();
// where graphClient is instance of GraphServiceClient
我得到:
generalException
Message: Unexpected exception returned from the service.
调用堆栈:
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 帐户。
您的示例中的驱动器索引器需要一个 driveId,而不是 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();