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

> Auth0.Swift によるユーザー管理

# Auth0.swift: ユーザー管理

<Tooltip tip="Management API: お客様が管理タスクを実行するための製品です。" cta="用語集を表示" href="/docs/ja-jp/glossary?term=Management+API">Management API</Tooltip> では、[ユーザーアカウントのリンク](/docs/ja-jp/manage-users/user-accounts/user-account-linking) を利用して、異なるプロバイダーの別々のユーザーアカウントをリンクおよびリンク解除し、1 つのプロファイルにまとめることができます。また、ユーザーのメタデータやその他のプロファイル情報を更新することもできます。

<div id="link-users">
  ## ユーザーをリンクする
</div>

ユーザーアカウントをリンクすると、どのアカウントを使って認証しても、ログイン時に同じプロファイルを表示できるようになります。Auth0 では、デフォルトですべてのアカウントを個別のプロファイルとして扱います。そのため、ユーザーのアカウントをリンクしたい場合は、この方法を使用します。

`link` メソッドは 2 つのパラメータを受け取ります。1 つはプライマリプロファイルのユーザー ID、もう 1 つはセカンダリプロファイルの <Tooltip tip="Access Token: API へのアクセスに使用される、opaque な文字列または JWT の形式の認可資格情報。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=Access+Token">Access Token</Tooltip> です (この ID でログインした後に取得した token) 。ここでいうユーザー ID は、このユーザーアカウントを一意に識別する identifier です。ID が `facebook|1234567890` の形式である場合、必要な ID は区切り文字のパイプより後ろの部分です (この場合は `1234567890`) 。

```swift lines theme={null}
Auth0
   .users(token: "user-scoped access token")
   .link(userId, withOtherUserToken: "another user token")
   .start { result in
      switch result {
      case .success(let userInfo):
        print("User: \(userInfo)")
      case .failure(let error):
        print(error)
      }
   }
```

<div id="unlink-users">
  ## ユーザーのリンク解除
</div>

ユーザーのリンク解除は、ユーザーのリンクとほぼ同じ手順で行います。`unlink` メソッドは 3 つのパラメーターを受け取ります。セカンダリ プロファイルのユーザー ID、セカンダリ プロファイルのプロバイダー (接続の <Tooltip tip="IDプロバイダー（IdP）: デジタルIDを保存および管理するサービス。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=identity+provider">アイデンティティプロバイダー</Tooltip>) 、そしてプライマリ プロファイルのユーザー ID です。
これらのパラメーターは、要するに「この **セカンダリ ユーザー** (この **プロバイダー** の) と、この **プライマリ ユーザー** とのリンクを解除する」という意味です。

```swift lines theme={null}
Auth0
   .users(token: "user-scoped access token")
   .unlink(identityId: identifier, provider: provider, fromUserId:userId)
   .start { result in
      switch result {
      case .success(let userInfo):
        print("User: \(userInfo)")
      case .failure(let error):
        print(error)
      }
   }
```

アカウントがリンクされても、セカンダリーアカウントのプロファイルのメタデータがプライマリーアカウントのプロファイルのメタデータに統合されることはありません。同様に、アカウントをリンク解除しても、セカンダリーアカウントのプロファイルにプライマリーアカウントのプロファイルのメタデータが保持されることはありません。

<div id="retrieve-user-metadata">
  ## ユーザーのメタデータを取得する
</div>

```swift lines theme={null}
Auth0
    .users(token: "user-scoped access token")
    .get(userId, fields: ["user_metadata"], include: true)
    .start { result in
        switch result {
        case .success(let userInfo):
            print("User: \(userInfo)")
        case .failure(let error):
            print(error)
        }
    }
```

<div id="update-user-metadata">
  ## ユーザーのメタデータを更新
</div>

ユーザーのメタデータを更新するには、`userMetadata` オブジェクトを作成してから、ユーザー ID と `userMetadata` オブジェクトを渡して `patch` メソッドを呼び出します。このオブジェクト内の値は、同じキーを持つ既存の値を上書きし、ユーザーのメタデータにまだ存在しないキーについては新しく追加されます。

```swift lines theme={null}
Auth0
    .users(token: "user-scoped access token")
    .patch("user identifier", userMetadata: ["first_name": "John", "last_name": "Doe"])
    .start { result in
        switch result {
        case .success(let userInfo):
          print("User: \(userInfo)")
        case .failure(let error):
          print(error)
        }
    }
```
