2017-08-10 13 views
0

ContactFolderからMicrosoft Graph APIを使用して連絡先のリストを取得しようとしています。次のように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コレクションは、Outlookを通して見たとき、そのフォルダ内の連絡先があるにもかかわらず、nullです。

そのメソッドが利用可能であるようには見えないが、私は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メソッドを持っていません。私は何かを見逃すことができますか?連絡先プロパティでGetAsyncを呼び出そうとした際のスクリーンショットで質問を更新しました。 – Trev

+0

あなたは私に何か情報を与えることができますか? – Trev

関連する問題