如何使用Microsoft Graph API正确获取与我共享的所有项目?

时间:2019-06-07 08:04:59

标签: c# microsoft-graph

对于通过SharedWithMe请求查询的某些项目字段,Microsoft Graph API C#SDK似乎返回null。尤其是其中包括WebDavUrl和包类型。

我确保与我共享一个OneNote项,并通过Graph Explorer验证了数据的正确性。我还验证了我的应用程序的权限是否正确设置为:“ User.Read Notes.Read.All Sites.Read.All Files.Read.All”

var graphClient = MicrosoftGraphService.Instance.GraphProvider;
var driveItems = await graphClient.Me.Drive.SharedWithMe().Request().GetAsync();
foreach (var item in driveItems)
{
    if (item.Package.Type == "oneNote") {...}
}

当我在Graph Explorer(https://developer.microsoft.com/en-us/graph/graph-explorer)上以等效的GET:https://graph.microsoft.com/v1.0/me/drive/sharedWithMe查询Graph API时,它向我显示了当前与我共享的所有项目以及与它们相关的所有信息。但是,当我执行“ item”中PackageType上方的代码段时,始终为空。


编辑: https://docs.microsoft.com/en-us/graph/api/drive-sharedwithme?view=graph-rest-1.0&tabs=cs建议查询带有remoteItem-driveId和remoteItem-id的商品。我会看到这会引导我。

1 个答案:

答案 0 :(得分:0)

这是我经过实验得出的。您以JSON形式获得响应,在我看来,该响应足以继续。

_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Your AccessToken");
_httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var message = new HttpRequestMessage(HttpMethod.Get, "https://graph.microsoft.com/v1.0/me/drive/sharedWithMe");
var response = await graphClient.HttpProvider.SendAsync(message);
var json = await response.Content.ReadAsStringAsync();

当然,使用SDK的可行解决方案会更有趣。