オープン拡張機能を使用してカスタム データをユーザーに追加する

このチュートリアルでは、 開いている拡張機能の使用方法を学習します。

デスクトップやモバイルなどの複数のクライアント プラットフォームで使用できるアプリケーションを構築しているとします。 ユーザーがアプリへのサインインに使用するデバイスに関係なく一貫するように UI エクスペリエンスを構成できるようにする必要があります。

このシナリオでは、次の方法について説明します。

  • 開いている拡張機能を使用して、ユーザーに関するいくつかのローミング プロファイル情報を表します。
  • ユーザーに対してクエリを実行し、ローミング プロファイルを返します。
  • 開いている拡張機能に格納されているユーザーのローミング プロファイル情報を変更します。
  • ユーザーのローミング プロファイル情報を削除します。

注:

ユーザーとは別に、オープン拡張機能もサポートされ、 他のリソースの種類で管理できます。

前提条件

この記事の手順を再現するには、次の特権が必要です。

  • Graph エクスプローラーやローミング プロファイルを格納するユーザーなどの API クライアントにサインインします。
  • サインインしているユーザーに対して User.ReadWrite 委任されたアクセス許可をアプリに付与します。

手順 1. ローミング プロファイル情報を追加する

ユーザーがアプリにサインインし、アプリの外観を構成します。 これらのアプリ設定はローミングされ、アプリにサインインするためにユーザーが使用するデバイスに関わらず同じエクスペリエンスになるようにする必要があります。 アプリは、次の要求を実行して Microsoft Graph を呼び出し、ローミング プロファイル情報をサインインしているユーザーのリソース オブジェクトに追加します。

要求

POST https://graph.microsoft.com/v1.0/me/extensions
Content-type: application/json

{
    "@odata.type":"microsoft.graph.openTypeExtension",
    "extensionName":"com.contoso.roamingSettings",
    "theme":"dark",
    "color":"purple",
    "lang":"Japanese"
}

応答

HTTP/1.1 201 Created
Content-Type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('376bdbfc-e41f-4082-a8cf-b31731465eeb')/extensions/$entity",
    "@odata.type": "#microsoft.graph.openTypeExtension",
    "extensionName": "com.contoso.roamingSettings",
    "theme": "dark",
    "color": "purple",
    "lang": "Japanese",
    "id": "com.contoso.roamingSettings"
}

手順 2. ローミング プロファイル情報を取得する

ユーザーが別のデバイスからアプリにサインインすると、アプリは Microsoft Graph を呼び出してユーザーのプロファイルの詳細を取得し、 拡張機能 ナビゲーション プロパティを展開してローミング設定を取得し、このデータを使用して他のデバイスと同じエクスペリエンスを提供します。

要求

GET https://graph.microsoft.com/v1.0/me?$select=id,displayName,mail,mobilePhone&$expand=extensions

応答

HTTP/1.1 200 OK
Content-Type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(id,displayName,mail,mobilePhone,extensions())/$entity",
    "@microsoft.graph.tips": "Use $select to choose only the properties your app needs, as this can lead to performance improvements. For example: GET me?$select=signInActivity,accountEnabled",
    "id": "376bdbfc-e41f-4082-a8cf-b31731465eeb",
    "displayName": "Raul Razo",
    "mail": null,
    "mobilePhone": null,
    "extensions@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('376bdbfc-e41f-4082-a8cf-b31731465eeb')/extensions",
    "extensions": [
        {
            "@odata.type": "#microsoft.graph.openTypeExtension",
            "extensionName": "com.contoso.roamingSettings",
            "theme": "dark",
            "color": "purple",
            "lang": "Japanese",
            "id": "com.contoso.roamingSettings"
        }
    ]
}

手順 3. ローミング プロファイル情報を変更する

ユーザーは、移動プロファイル情報を変更できます。 アプリは、次のクエリを実行して Microsoft Graph を呼び出します。 要求は、204 No Content 応答コードを返します。

一部のプロパティのみを更新する場合でも、要求本文にもすべてのプロパティを含める必要があります。 それ以外の場合、渡さないプロパティは削除されます。 データを削除してもプロパティを保持するには、プロパティ値を に null設定します。

PATCH https://graph.microsoft.com/v1.0/me/extensions/com.contoso.roamingSettings
Content-type: application/json

{
    "theme":"light",
    "color":"yellow",
    "lang":"Swahili"
}

手順 4. ユーザーのローミング プロファイルを削除する

ユーザーは、ローミング プロファイルを不要にすることを決定します。 拡張機能プロパティを削除するために、アプリは次の要求を実行して Microsoft Graph を呼び出します。 要求は、204 No Content 応答コードを返します。

DELETE https://graph.microsoft.com/v1.0/me/extensions/com.contoso.roamingSettings