> ## 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="/ja/docs/glossary?term=Management+API">Management API</Tooltip> では、[ユーザーアカウントのリンク](/ja/docs/manage-users/user-accounts/user-account-linking) を利用できます。これにより、異なるプロバイダーに属する別々のユーザーアカウントをリンクまたはリンク解除し、1 つのプロフィールに関連付けることができます。また、ユーザーメタデータやその他のプロフィール情報を更新することもできます。

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

ユーザーアカウントをリンクすると、ユーザーはどのアカウントでも認証でき、どのアカウントでログインしても同じプロフィールを表示できます。Auth0 では、これらのアカウントはデフォルトですべて別々のプロフィールとして扱われるため、ユーザーのアカウントをリンクする場合はこの方法を使用します。

`link` メソッドは 2 つのパラメーターを受け取ります。1 つはプライマリプロフィールのユーザー ID、もう 1 つはセカンダリプロフィールの <Tooltip tip="アクセストークン: API へのアクセスに使用される、不透明な文字列または JWT 形式の認可資格情報。" cta="用語集を見る" href="/ja/docs/glossary?term=Access+Token">アクセストークン</Tooltip> です (この ID でログインした後に取得されるトークン) 。ここでいうユーザー 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)
      }
   }
```

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

ユーザーのリンク解除は、ユーザーのリンクとほぼ同じ手順です。`unlink` メソッドは 3 つのパラメーターを受け取ります。セカンダリプロフィールのユーザー ID、セカンダリプロフィールのプロバイダー (接続の <Tooltip tip="IDプロバイダー（IdP）: デジタル ID を保存および管理するサービス。" cta="用語集を見る" href="/ja/docs/glossary?term=identity+provider">IDプロバイダー</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)
        }
    }
```
