> ## 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.swift：ユーザー管理

> Auth0.Swiftを使用したユーザー管理

<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=management-api" tip="Management API: 顧客が管理タスクを実行できるようにするための製品。" cta="用語集の表示">Management API</Tooltip>は[ユーザーアカウントのリンク](/docs/ja-jp/manage-users/user-accounts/user-account-linking)を提供して、ユーザーがさまざまなプロバイダーから取得した個別のユーザーアカウントを1つのプロファイルにリンクまたはリンク解除できるようにます。また、ユーザーメタデータや他のプロファイル情報を更新することもできます。

## ユーザーをリンクする

ユーザーアカウントをリンクすると、ユーザーがどのアカウントからでも認証できるようになり、どのアカウントを使用してログインしても同じプロファイルが引き出されます。Auth0では、デフォルトですべてのアカウントが個別のプロファイルとして扱われるため、ユーザーのアカウントをリンクしたい場合は以下の手順が必要です。

`link`メソッドは、プライマリープロファイルのユーザーIDとセカンダリープロファイルのアクセストークン（このIDでログインした後に取得するトークン）の2つのパラメーターを受け付けます。ユーザーIDはこのユーザーアカウントの一意の識別子です。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)
      }
   }
```

## ユーザーをリンク解除する

ユーザーのリンク解除は、リンクと同様の処理になります。`unlink`メソッドは、セカンダリープロファイルのユーザーID、セカンダリープロファイルのプロバイダー（接続のIDプロバイダー）とプライマリープロファイルのユーザーIDの3つのパラメーターを受け付けます。
パラメーターは基本的に「この**セカンダリーユーザー** を（この**プロバイダー** で）この**プライマリーユーザー** からリンク解除する」と指示します。

```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)
      }
   }
```

アカウントのリンクでは、セカンダリーアカウントのプロファイルのメタデータはプライマリーアカウントのプロファイルのメタデータとマージされません。同様に、アカウントのリンク解除では、セカンダリーアカウントのプロファイルはプライマリーアカウントのプロファイルのメタデータを保持しません。

## ユーザーメタデータを取得する

```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)
        }
    }
```

## ユーザーメタデータを更新する

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

```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)
        }
    }
```
