ContactFolder中的联系人列表

问题描述:

我想要使用Microsoft Graph API从ContactFolder获取联系人列表。ContactFolder中的联系人列表

我使用的代码如下:

GraphServiceClient graphClient = new GraphServiceClient (new CustomAuthentication()); 
// build the request 
var request = graphClient.Me.ContactFolders.Request(); 

// get all contact folders 
var folders = await request.GetAsync(); 

// get the first folder 
var folder = folders.FirstOrDefault(); 

// get all contacts in that folder (Contacts is always null) 
var contacts = folder.Contacts.ToList(); 

在最后一行,则Contacts集合为null即使通过Outlook查看时是该文件夹中的联系人。

席力图召folder.Contacts.GetAsync(),但是该方法不会出现可用:

enter image description here

任何帮助,将不胜感激。

首先您要求FirstOrDefault但这不是由IUserContactFoldersCollectionPage公开的方法。您需要通过指数来解决内folders项目:

folders[0] 
folders[1] 
folders[etc] 

你还没有填充Contacts对象。请记住,Microsoft Graph是一个REST API。它提供了无状态HTTP方法的集合,因此它不会自动提供对象模型。你需要特别要求的数据Contacts

.Contacts.Request().GetAsync(); 

还要注意的是,如果有多个文件夹ContactFolders才会返回结果。从不返回默认的联系人文件夹。如果用户没有额外的文件夹,这将返回一个空的结果。记住

有了这个,你会找回Contacts这样的:

GraphServiceClient graphClient = new GraphServiceClient(new CustomAuthentication()); 

// get all contact folders 
var folders = await graphClient 
    .Me 
    .ContactFolders 
    .Request() 
    .GetAsync(); 

if (folders.Count > 0) 
{ 
    // Get contacts from that first folder 
    var folderContacts = await graphClient 
     .Me 
     .ContactFolders[folders[0].Id] 
     .Contacts 
     .Request() 
     .GetAsync(); 
} 
else 
{ 
    // This user only has the default contacts folder 
    var defaultContacts = await graphClient 
     .Me 
     .Contacts 
     .Request() 
     .GetAsync(); 
} 
+0

我试过了,但该文件夹对象的联系人属性不会有GetAsync方法。我能错过什么吗?我更新了我的问题,并试图在Contacts属性上调用GetAsync。 – Trev

+0

更多信息您可以给我吗? – Trev