从所有 Outlook 联系人文件夹中获取联系人 Microsoft Graph

Ahm*_*mad 5 c# microsoft-graph-api

我正在使用 Microsoft Graph 使用以下代码检索联系人文件夹:

GraphServiceClient client = new GraphServiceClient(new DelegateAuthenticationProvider(
    (requestMessage) => {
        requestMessage.Headers.Authorization = 
          new AuthenticationHeaderValue("Bearer", accessToken);
        return Task.FromResult(0);
    }));

var contactsData = await client
    .Me
    .Contacts
    .Request()
    .Top(1000)
    .GetAsync();
Run Code Online (Sandbox Code Playgroud)

上面的代码返回联系人,但只返回默认文件夹中的联系人。我想从用户的所有文件夹中检索联系人。

我试过先获取文件夹,然后获取他们的联系人,但它返回 a Null Reference Exceptionas Contacts are null

var Folders = client
    .Me
    .ContactFolders
    .Request()
    .Top(1000)
    .GetAsync();

Folders.Wait();
var contacts = Folders.Result.SelectMany(a => a.Contacts).ToList();
Run Code Online (Sandbox Code Playgroud)

Mia*_*iao 1

我现在在这台机器上没有环境可以测试,但据我了解,您可以使用选项查询参数来过滤子文件夹中的联系人。

  1. 你需要找出所有子文件夹

    获取 /users/{id | userPrincipalName}/contactFolders

  2. 收集所有子文件夹 ID
  3. 在每个子文件夹中查找联系人

    获取 /me/contactFolder/{id}/childFolders/{id}/contacts

有关更多联系人文件夹和联系人相关信息。请阅读这些文档。 https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/user_list_contactfolders https://developer.microsoft.com/en-us/graph/docs/api-reference/beta /api/user_list_contacts