> ## Documentation Index
> Fetch the complete documentation index at: https://auth0.generaltranslation.app/llms.txt
> Use this file to discover all available pages before exploring further.

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

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

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

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

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

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

<div id="metadata-types">
  ## メタデータの種類
</div>

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

<table class="table">
  <thead>
    <tr>
      <th><strong>メタデータタイプ</strong></th>
      <th><strong>フィールド名</strong></th>
      <th><strong>説明</strong></th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><strong>User Information（ユーザー情報）</strong></td>
      <td>`user_metadata`</td>
      <td>ユーザーの主要な機能性に影響しない設定などのユーザー属性を保管します。このデータは、Management APIを使ってフォームを作成すると、ログイン済みのユーザーが編集<strong>できる</strong>ため、安全なデータ保管場所としては使用<strong>できません</strong>。</td>
    </tr>

    <tr>
      <td><strong>Access Information（アクセス情報）</strong></td>
      <td>`app_metadata`</td>
      <td>権限、Auth0プラン、外部IDなど、ユーザーの機能へのアクセスに影響する情報を保管します。このデータはユーザーが編集<strong>できない</strong>ため、このフィールドに保管できる情報には制約があります。</td>
    </tr>

    <tr>
      <td><strong>Application Information（アプリケーション情報）</strong></td>
      <td>`Client`オブジェクトの`client_metadata`、ルールの`context.clientMetadata`、ログイン後アクションの`event.client.metadata`。</td>
      <td>アプリケーション（OIDC OAuth2の用語では<em>クライアント</em>）に関する情報を保管します。たとえば、アプリケーションのホームページのURL（Auth0がアプリケーション設定で指定しない任意の値）です。</td>
    </tr>
  </tbody>
</table>

<div id="manage-metadata">
  ## メタデータを管理する
</div>

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

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

<div id="use-actions">
  ### アクションを使用する
</div>

[アクション](/docs/ja-JP/ja-jp/customize/actions)は安全でテナント固有のバージョン管理された関数で、Node.jsで記述され、Auth0プラットフォームにある特定の拠点で実行されます。アクションは、カスタムロジックでAuth0の機能をカスタマイズおよび拡張するために使用されます。[ユーザープロファイルを強化](/docs/ja-JP/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/ja-jp/manage-users/user-accounts/metadata/manage-user-metadata)」をお読みください。

<div id="use-the-management-api">
  ### Management APIを使用する
</div>

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

<table class="table">
  <thead>
    <tr>
      <th><strong>タスク</strong></th>
      <th><strong>エンドポイント</strong></th>
      <th><strong>スコープ</strong></th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>表示</td>
      <td><a href="https://auth0.com/docs/ja-jp/api/management/v2#!/Users/get_users_by_id">`GET /api/v2/users/{id}`</a></td>
      <td>`read:current_user`</td>
    </tr>

    <tr>
      <td>作成</td>
      <td><a href="https://auth0.com/docs/ja-jp/api/management/v2#!/Users/post_users">`PATCH /api/v2/users/{id}`</a></td>
      <td>`create:current_user_metadata`</td>
    </tr>

    <tr>
      <td>更新</td>
      <td><a href="https://auth0.com/docs/ja-jp/api/management/v2#!/Users/patch_users_by_id">`PATCH /api/v2/users/{id}`</a></td>
      <td>`update:current_user_metadata`</td>
    </tr>

    <tr>
      <td>削除</td>
      <td><a href="https://auth0.com/docs/ja-jp/api/management/v2#!/Users/delete_multifactor_by_provider">`DELETE /api/v2/users/{id}/multifactor/{provider}`</a></td>
      <td>`update:users`</td>
    </tr>
  </tbody>
</table>

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

<div id="use-the-dashboard">
  ### Dashboardを使用する
</div>

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

<div id="use-the-lock-library">
  ### ロックライブラリーを使用する
</div>

[ロック](/docs/ja-JP/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/ja-jp/libraries/lock/v10/customization#additionalsignupfields-array-)」を参照してください。

<div id="custom-database-connections-and-metadata">
  ## カスタムデータベース接続とメタデータ
</div>

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

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

<div id="custom-emails-and-metadata">
  ## カスタムメールとメタデータ
</div>

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

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

<div id="learn-more">
  ## もっと詳しく
</div>

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