带有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;
问题 – 返回的数据全为null
。 Microsoft Graph SDK
是否支持撤回OneDrive for Bussiness
帐户的Quota
方面?
更新
我还提供了client_id
, client_secret
和tenant_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 } }