オープン拡張機能を使用してカスタム データをユーザーに追加するAdd custom data to users using open extensions

オープン拡張機能の使用方法について、具体例を使ってデモンストレーションします。We're going to walk you through an example to demonstrate how to use open extensions.

デスクトップやモバイルなど、多種のクライアント プラットフォームで利用できるアプリケーションをビルドしているとします。アプリにサインインするときのデバイスに関係なく一貫性を確保できるように、ユーザー自身で UI エクスペリエンスを構成できるようにしたいと考えています。これは、ほとんどのアプリで一般的な要件です。Imagine you're building an application that is available on lots of different client platforms, such as desktop and mobile. You want to let users configure their UI experience so it’s consistent no matter which device they use to sign in to your app. This is a common requirement for most apps.

このシナリオでは、以下の操作を行う方法を紹介します。For this scenario, we're going to show you how to:

  1. ユーザーに関する何らかのローミング プロファイル情報を表すオープン拡張機能を追加します。Add an open extension representing some roaming profile information about the user.
  2. ユーザーに対してクエリを実行し、ローミング プロファイルを返します。Query the user and return the roaming profile.
  3. ユーザーのローミング プロファイル情報 (オープン拡張機能値) を変更します。Change the user's roaming profile information (the open extension value).
  4. ユーザーのローミング プロファイル情報を削除します。Delete the user's roaming profile information.

注: このトピックでは、user リソースにおいてオープン拡張機能を追加、読み取り、更新、削除する方法を示します。これらの方法は、administrativeUnitcontactdeviceeventgroupgroup eventgroup postorganizaton の各リソース型でもサポートされています。Note: This topic shows you how to add, read, update and delete open extensions on a user resource. These methods are also supported for the administrativeUnit, contact, device, event, group, group event, group post and organizaton resource types.
これらのリソース型のいずれかを使用して、次の例の要求を簡単に更新できます。次の例に示されている応答は、わかりやすくするために途中までしか示されていない場合があります。Simply update the example requests below using any of those resource types. The responses shown in the examples below may be truncated for brevity.

1.ローミング プロファイル情報を追加する1. Add roaming profile information

ユーザーがアプリにサインインし、アプリの外観を構成します。これらのアプリ設定はローミングされ、アプリにサインインするためにユーザーが使用するデバイスに関わらず同じエクスペリエンスになるようにする必要があります。ここでは、ユーザーのリソースにローミング プロファイル情報を追加する方法を示します。The user signs in to the app and configures the look and feel of the app. These app settings should roam so that the user gets the same experience on whatever device they sign in to the app from. Here we'll see how to add the roaming profile information to a user resource.

要求Request
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"
}
応答Response
HTTP/1.1 201 Created
Content-Type: application/json
Content-length: 420

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

2.ローミング プロファイル情報を取得する2. Retrieve roaming profile information

ユーザーが別のデバイスからアプリにサインインするときに、アプリはユーザーのプロファイル詳細とローミング設定を取得できます。これは、ユーザーのリソースを取得し、拡張ナビゲーション プロパティを展開することによって行えます。When the user signs in to the app from another device, the app can retrieve the user's profile details as well as their roaming settings. This can be done by getting the user's resource and expanding the extension navigation property.

要求Request
GET https://graph.microsoft.com/v1.0/me?$select=id,displayName,mail,mobilePhone&$expand=extensions
応答Response
HTTP/1.1 200 OK
Content-Type: application/json
Content-length: 420

{
    "id": "84b80893-8749-40a3-97b7-68513b600544",
    "displayName": "John Smith",
    "mail": "john@contoso.com",
    "mobilePhone": "1-555-6589",
    "extensions": [
        {
            "@odata.type": "#microsoft.graph.openTypeExtension",
            "extensionName": "com.contoso.roamingSettings",
            "id": "com.contoso.roamingSettings",
            "theme": "dark",
            "color": "purple",
            "lang": "Japanese"
        }
    ]
}

注: 複数の拡張機能がある場合、対象の拡張機能を取得するために id でフィルター処理できます。Note: If you have multiple extensions, you can filter on the id to get the extension that you are interested in.

3.ローミング プロファイル情報を変更する3. Change roaming profile information

ユーザーは、ローミング プロファイル情報を変更することができます。オープン拡張機能の値で PATCH を使用して更新できます。The user may choose to change their roaming profile information. This update can be done with a PATCH on the open extension value.

要求Request
PATCH https://graph.microsoft.com/v1.0/me/extensions/com.contoso.roamingSettings
Content-type: application/json
{
    "theme":"light",
    "color":"yellow",
    "lang":"Swahili"
}
応答Response
HTTP/1.1 204 No content

4.ユーザーのローミング プロファイルを削除する4. Delete a user's roaming profile

ローミング プロファイルがもはや不要であるとユーザーが判断する場合、削除できます。オープン拡張機能の値で DELETE 要求を使用して行えます。The user decides that they don't want a roaming profile anymore, so they delete it. This can be done with a DELETE request on the open extension value.

要求Request
DELETE https://graph.microsoft.com/v1.0/me/extensions/com.contoso.roamingSettings
応答Response
HTTP/1.1 204 No content

関連項目See also