2017-08-10 35 views
0

我想要使用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

任何幫助,將不勝感激。

回答

0

首先您要求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

相關問題