> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-actions-triggers-prototype.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# ユーザープロファイルでのメタデータの使い方

> Auth0が使用するユーザー、アプリケーション、およびクライアントのメタデータについて説明します。IDプロバイダー以外からの情報を保管するために、メタデータをどのようにして使うのかについて説明します。

Auth0は包括的システムを提供して、Auth0ユーザープロファイルにメタデータを保管できるようにしています。メタデータは以下に使用できます。

* アプリケーション特定のデータをユーザープロファイルに保管する
* ユーザーに対して特定の操作が発生したかを記録する
* ユーザープロファイルに関する負荷の大きい処理の結果をキャッシュして、将来のログインで再利用する
* IDプロバイダー以外から提供された情報を保管する、または、IDプロバイダーから提供された情報を上書きする情報を保管する

メタデータは、ユーザーのログインフローの一部として変更されても構いません。

接続の同期を構成して、ユーザープロファイルの作成時にのみユーザーのルート属性がIDプロバイダーによって更新されるようにします。ルート属性は、個別または一括インポートで編集できます。詳細については、「[ユーザープロファイルの更新に向けてIDプロバイダー接続を構成する](/docs/ja-jp/manage-users/user-accounts/user-profiles/configure-connection-sync-with-auth0)」をお読みください。

## メタデータの種類

Auth0は3種類のメタデータを使って、特定の情報を保管します。

| メタデータタイプ                                | フィールド名                                                                                            | 説明                                                                                                                        |
| --------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| **User Information（ユーザー情報）**            | `user_metadata`                                                                                   | ユーザーの主要な機能性に影響しない設定などのユーザー属性を保管します。このデータは、Management APIを使ってフォームを作成すると、ログイン済みのユーザーが編集**できる**ため、安全なデータ保管場所としては使用**できません**。 |
| **Access Information（アクセス情報）**          | `app_metadata`                                                                                    | 権限、Auth0プラン、外部IDなど、ユーザーの機能へのアクセスに影響する情報を保管します。このデータはユーザーが編集**できない**ため、このフィールドに保管できる情報には制約があります。                           |
| **Application Information（アプリケーション情報）** | `Client`オブジェクトの`client_metadata`、ルールの`context.clientMetadata`、ログイン後アクションの`event.client.metadata`。 | アプリケーション（OIDC OAuth2の用語では*クライアント*）に関する情報を保管します。たとえば、アプリケーションのホームページのURL（Auth0がアプリケーション設定で指定しない任意の値）です。                    |

## メタデータを管理する

メタデータの作成や更新には、ルール、Authentication API、<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=management-api" tip="Management API: 顧客が管理タスクを実行できるようにするための製品。" cta="用語集の表示">Management API</Tooltip>、<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=auth0-dashboard" tip="Auth0 Dashboard: サービスを構成するためのAuth0の主製品。" cta="用語集の表示">Auth0 Dashboard</Tooltip>、ロックライブラリーを使うことができます。

カスタムソーシャル接続のカスタムDBスクリプトと`fetchUserProfile`スクリプトでは、メタデータの作成と更新に`metadata`オブジェクトを使うことができます。

### アクションを使用する

[アクション](/docs/ja-jp/customize/actions)は安全でテナント固有のバージョン管理された関数で、Node.jsで記述され、Auth0プラットフォームにある特定の拠点で実行されます。アクションは、カスタムロジックでAuth0の機能をカスタマイズおよび拡張するために使用されます。[ユーザープロファイルを強化](/docs/ja-jp/customize/actions/flows-and-triggers/login-flow#enrich-the-user-profile)するために使うこともできます。

たとえば、カスタムクレームを使用する`post-login`アクションを作成して、`user_metadata`プロパティーをIDトークンにコピーするのに使うことができます。その際に、ユーザーの`user_metadata`はAuthentication APIの[ユーザー情報取得](https://auth0.com/docs/api/authentication#get-user-info)エンドポイントを介して取得されます。

詳細については、「[ログイン後のアクショントリガーでユーザーメタデータを管理する](/docs/ja-jp/manage-users/user-accounts/metadata/manage-user-metadata)」をお読みください。

### Management APIを使用する

ユーザーは、適切なスコープを指定してアクセストークンを要求し、以下の[Management API](/docs/ja-jp/api/management/v2)エンドポイントを使って`user_metadata`の表示や作成、更新を行ったり、<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=multifactor-authentication" tip="多要素認証（MFA）: ユーザー名とパスワードに加えて、SMS経由のコードなどの要素を使用するユーザー認証プロセス。" cta="用語集の表示">MFA</Tooltip>の構成を削除したりできます。

| タスク | エンドポイント                                                                                                                                     | スコープ                           |
| --- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ |
| 表示  | [`GET /api/v2/users/{id}`](https://auth0.com/docs/ja-jp/api/management/v2#!/Users/get_users_by_id)                                          | `read:current_user`            |
| 作成  | [`PATCH /api/v2/users/{id}`](https://auth0.com/docs/ja-jp/api/management/v2#!/Users/post_users)                                             | `create:current_user_metadata` |
| 更新  | [`PATCH /api/v2/users/{id}`](https://auth0.com/docs/ja-jp/api/management/v2#!/Users/patch_users_by_id)                                      | `update:current_user_metadata` |
| 削除  | [`DELETE /api/v2/users/{id}/multifactor/{provider}`](https://auth0.com/docs/ja-jp/api/management/v2#!/Users/delete_multifactor_by_provider) | `update:users`                 |

Auth0 Management APIを呼び出すのに、アクセストークンは必須です。詳細については、「[Management APIのアクセストークン](/docs/ja-jp/api/management/v2/tokens)」と「[SPAにManagement APIのトークンを取得する](/docs/ja-jp/api/management/v2/get-access-tokens-for-spas)」をお読みください。

### Dashboardを使用する

Auth0 Dashboardを使用すると、キーと値のペアを含むアプリケーションメタデータを構成することができます。詳細については、「[アプリケーションメタデータを構成する](/docs/ja-jp/get-started/applications/configure-application-metadata)」をお読みください。

### ロックライブラリーを使用する

[ロック](/docs/ja-jp/libraries/lock)ライブラリーは、`user_metadata`の定義、追加、読み取り、更新に使うことができます。`user_metadata`プロパティは、他のユーザープロファイルのプロパティと同じ方法で読み取ります。たとえば、以下のコードのスニペットでは、`user_metadata.hobby`に関連付けられた値が取得され、ページにある要素に割り当てられます。

```javascript lines theme={null}
// Use the accessToken acquired upon authentication to call getUserInfo
lock.getUserInfo(accessToken, function(error, profile) {
  if (!error) {
    document.getElementById('hobby').textContent = profile.user_metadata.hobby;
  }
});
```

ユーザーのサインアップフォームにカスタムフィールドを追加するには、`additionalSignUpFields`を使用します。ユーザーがカスタムフィールドにデータを追加すると、Auth0は入力された値をユーザーの`user_metadata`に保管します。サインアップ時の`user_metadata`の追加については、「[追加のサインアップフィールド](/docs/ja-jp/libraries/lock/v10/customization#additionalsignupfields-array-)」を参照してください。

## カスタムデータベース接続とメタデータ

[カスタムデータベース接続](/docs/ja-jp/connections/database#using-your-own-user-store)がある場合には、Authentication APIの[`/dbconnections/signup`](/docs/ja-jp/api/authentication?shell#signup)エンドポイントを使って、ユーザーに`user_metadata`を設定することができます。カスタムサインアッププロセスでのメタデータの扱いについては、「[カスタムサインアップ](/docs/ja-jp/libraries/custom-signup)」をお読みください。

`user_metadata`フィールドをAuthentication APIの`/dbconnections/signup`エンドポイントを使って設定する際には、最大10の文字列フィールド、最大500文字までに制限されます。

## カスタムメールとメタデータ

メタデータを使用して、Auth0メールのカスタマイズに使いたい情報を保管します。たとえば、ユーザーがフィールドの値を変更できるようにするには、`user_metadata.lang`を使って、メールの言語をカスタマイズする情報を使用します。詳細については、「[メールテンプレートをカスタマイズする](/docs/ja-jp/customize/email/email-templates)」をお読みください。

ロックで問題が発生した場合には、「[非推奨エラー](/docs/ja-jp/troubleshoot/basic-issues/check-deprecation-errors)」を確認してください。Management APIで問題が発生した場合には、「[API呼び出しをチェックする](/docs/ja-jp/troubleshoot/authentication-issues/check-api-calls)」を参照してください。

## もっと詳しく

* [メタデータのフィールド名とデータ型](/docs/ja-jp/manage-users/user-accounts/metadata/metadata-fields-data)
* [ルールを使用してメタデータを管理](/docs/ja-jp/manage-users/user-accounts/metadata/manage-metadata-rules)
* [Management APIを使ってメタデータを管理する](/docs/ja-jp/manage-users/user-accounts/metadata/manage-metadata-api)
* [ロックを使用してメタデータを管理する](/docs/ja-jp/manage-users/user-accounts/metadata/manage-metadata-lock)
* [アプリケーションメタデータを構成する](/docs/ja-jp/get-started/applications/configure-application-metadata)
* [ログイン後のアクショントリガーでユーザーメタデータを管理する](/docs/ja-jp/manage-users/user-accounts/metadata/manage-user-metadata)
