带有Service / Daemon应用程序的Microsoft Graph CSharp SDK和OneDrive for Business – Quota facet返回null

我正在编写针对OneDrive for Business Microsoft Graph CSharp SDK编码,我正在尝试撤回特定User数据并请求返回Quota信息。

我的请求:

 var user = await graphServiceClient.Users["test@test.onmicrosoft.com"].Request().GetAsync(); var drive = await graphServiceClient.Drives["test@test.onmicrosoft.com"].Request().GetAsync(); var quotaTotal = drive.Quota.Used; var displayName = user.DisplayName; var driveType = drive.DriveType; var driveId = drive.Id; 

问题 – 返回的数据全为nullMicrosoft Graph SDK是否支持撤回OneDrive for Bussiness帐户的Quota方面?

更新

我还提供了client_idclient_secrettenant_name来对应用程序级权限进行身份validation。

更新

添加了drive的屏幕截图,因为它返回所有null。

在此处输入图像描述

感谢您报告此问题。 如果您在令牌中有Files.Read.All或Files.ReadWrite.All作用域,则App Only调用确实没有返回配额和所有者信息。 我已经修复了这个问题,修复工具很快就会推出。 但是,作为一种解决方法,您可以为您的应用使用Sites.FullControl.All范围,并且应该返回配额和所有者信息。

该服务未返回quota.used facet(我将报告此问题)。 您可以使用总属性和剩余属性来确定已使用的配额量。

更新要回答您的原始问题…是,Microsoft Graph .Net客户端库确实支持OneDrive for Business帐户上的配额和用户。

我不知道为什么你没有得到响应中返回的配额。 我不熟悉OneDrive for Business配额……你有可能没有配额吗? 只是为了完成,我拿了你的代码:

 var user = await graphClient.Users["user@test.onmicrosoft.com"].Request().GetAsync(); var drive = await graphClient.Drives["user@test.onmicrosoft.com"].Request().GetAsync(); var quotaTotal = drive.Quota.Used; var displayName = user.DisplayName; var driveType = drive.DriveType; var driveId = drive.Id; 

我成功找回了没有used属性的配额对象。 这是我在回复中看到的。

 { "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#drives/$entity", "id": "", "driveType": "business", "owner": { "user": { "id": "", "displayName": "user" } }, "quota": { "deleted": 4155859, "remaining": 1099484034353, "state": "normal", "total": 1099511627776 } }