この記事では、「Microsoft Graph を使用して Java アプリをビルドする」で作成したアプリケーション と、Microsoft Graph ユーザー API を使用したアプリ専用認証を拡張します。 Microsoft Graph を使用して、organization内のユーザーを一覧表示します。
Graph.javaを開き、次の関数を
Graphクラスに追加します。public static UserCollectionResponse getUsers() throws Exception { // Ensure client isn't null if (_appClient == null) { throw new Exception("Graph has not been initialized for app-only auth"); } return _appClient.users().get(requestConfig -> { requestConfig.queryParameters.select = new String[] { "displayName", "id", "mail" }; requestConfig.queryParameters.top = 25; requestConfig.queryParameters.orderby = new String[] { "displayName" }; }); }App.javaの空の
listUsers関数 を 次のように置き換えます。private static void listUsers() { try { final UserCollectionResponse users = Graph.getUsers(); // Output each user's details for (User user: users.getValue()) { System.out.println("User: " + user.getDisplayName()); System.out.println(" ID: " + user.getId()); System.out.println(" Email: " + user.getMail()); } final Boolean moreUsersAvailable = users.getOdataNextLink() != null; System.out.println("\nMore users available? " + moreUsersAvailable); } catch (Exception e) { System.out.println("Error getting users"); System.out.println(e.getMessage()); } }アプリを実行し、サインインし、オプション 4 を選択してユーザーを一覧表示します。
Please choose one of the following options: 0. Exit 1. Display access token 2. List users 3. Make a Graph call 2 User: Adele Vance ID: 05fb57bf-2653-4396-846d-2f210a91d9cf Email: AdeleV@contoso.com User: Alex Wilber ID: a36fe267-a437-4d24-b39e-7344774d606c Email: AlexW@contoso.com User: Allan Deyoung ID: 54cebbaa-2c56-47ec-b878-c8ff309746b0 Email: AllanD@contoso.com User: Bianca Pisani ID: 9a7dcbd0-72f0-48a9-a9fa-03cd46641d49 Email: NO EMAIL User: Brian Johnson (TAILSPIN) ID: a8989e40-be57-4c2e-bf0b-7cdc471e9cc4 Email: BrianJ@contoso.com ... More users available? True
コードの説明
getUsers関数のコードについて考えてみましょう。
コレクションへのアクセス
このメソッドは、ユーザーのコレクションを返します。 コレクションを返す Microsoft Graph のほとんどの API では、使用可能なすべての結果が 1 つの応答で返されるわけではありません。 代わりに、 ページングを 使用して結果の一部を返しながら、クライアントが次のページを要求するメソッドを提供します。
既定のページ サイズ
ページングを使用する API では、既定のページ サイズが実装されます。 ユーザーの場合、既定値は 10 です。 クライアントは、 $top クエリ パラメーターを使用して、より多く (またはそれ以下) を要求できます。
getUsersでは、$topの追加は、要求構成の top プロパティを使用して実行されます。
注:
topで設定される値は、明示的な数値ではなく、上限です。 API は、指定した値 まで 多数のユーザーを返します。
後続のページを取得する
サーバーで使用可能な結果が増える場合、コレクション応答には、次のページにアクセスするための API URL を含む @odata.nextLink プロパティが含まれます。 Java クライアント ライブラリは、コレクション応答オブジェクトに getOdataNextLink メソッドを提供します。 このメソッドが null 以外を返す場合は、使用可能な結果が増えます。
コレクションを並べ替える
関数は、要求構成で orderBy プロパティを使用して、ユーザーの表示名で並べ替えられた結果を要求します。 このプロパティは、 $orderby クエリ パラメーター を API 呼び出しに追加します。